Сделать символ новой строки необработанных строковых литералов С# 11 с использованием \r\n вместо \n
Новая функция С# 11 "необработанные строковые литералы", похоже, использует\n
чтобы разбить строку:
const string text = """
"header1";"header2"
"value1";"value2"
""";
Это произведет"header1";"header2"\n"value1";"value2"\n
Как я могу заставить его производить"header1";"header2"\r\n"value1";"value2"\r\n
?
1 ответ
У меня были проблемы со строковыми литералами и модульными тестами. На моем ПК Environment.NewLine отличался от сервера сборки. Итак, результаты испытаний различаются для:
$"a{Environment.NewLine}b"
и
"""
a
b
"""
Поэтому я изменил второе на:
"""
a
b
""".UseEnvironmentNewLine();
используя эти методы расширения:
public static string UseUnixNewLine(this string value) => value.UseSpecificNewLine("\n");
public static string UseWindowsNewLine(this string value) => value.UseSpecificNewLine("\r\n");
public static string UseEnvironmentNewLine(this string value) => value.UseSpecificNewLine(Environment.NewLine);
public static string UseSpecificNewLine(this string value, string specificNewline) => Regex.Replace(value, @"(\r\n|\r|\n)", specificNewline);
Если вы хотите, чтобы \r\n был концом строки. Просто сделайте это:
string text = """
"header1";"header2"
"value1";"value2"
""".UseWindowsNewLine();