Сделать символ новой строки необработанных строковых литералов С# 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();
Другие вопросы по тегам