В .NET я могу предоставить оба \r
или \n
строковые литералы, но есть способ вставить что-то вроде специального символа «новая строка», например, Environment.NewLine
статическое свойство?
c#
.net
line-breaks
Капитан комиксов
источник
источник
Ответы:
Ну, простые варианты:
string.Format
:Конкатенация строк:
Строковая интерполяция (в C # 6 и выше):
Вы также можете использовать \ n везде и заменить:
Обратите внимание, что вы не можете сделать это строковой константой , потому что значение
Environment.NewLine
будет доступно только во время выполнения.источник
Environment.NewLine
? Наоборот, это хорошая практикаЕсли вы хотите, чтобы константная строка содержала Environment.NewLine, вы можете сделать что-то вроде этого:
РЕДАКТИРОВАТЬ
Так как это в константной строке, это делается во время компиляции, поэтому это интерпретация новой строки компилятором. Я не могу найти ссылку, объясняющую это поведение, но я могу доказать, что оно работает как задумано. Я скомпилировал этот код на Windows и Ubuntu (с Mono), затем разобрал, и вот результаты:
Как видите, в Windows переводы строк интерпретируются как \ r \ n, а в Ubuntu - как \ n
источник
источник
first + Environment.NewLine + second
который является более эффективным и (ИМО) легче читать?String.Format
будет производиться 1 строка за раз (но внутренне она немного медленная из-за конкатенации, специфичной для культуры, и т. Д.), В то время как конкатенация строк - 1 в результате + 1 временно, верно?String.Concatenate
, что напрямую создает только одну выходную строку (IIRC, если строки являются литералами, конкатенация выполняется в компиляторе."a"+b+"c"+d
и т. Д.) По производительности равна одной? Или просто переоборудован вString.Concatenate(a,b,c,d,etc)
, верно?string.Format
в комментарии. Конкатенация строк не создаст никаких временных строк, потому что компилятор вызоветstring.Concat(first, Environment.NewLine, second)
.Еще один способ удобного размещения Environment.NewLine в формате строки. Идея состоит в том, чтобы создать метод расширения строки, который форматирует строку как обычно, но также заменяет {nl} в тексте на Environment.NewLine
использование
Код
Заметка
Если вы хотите, чтобы ReSharper выделил ваши параметры, добавьте атрибут к методу выше
[StringFormatMethod ( "Формат")]
Эта реализация явно менее эффективна, чем просто String.Format
Может быть, тот, кто заинтересован в этом вопросе, также заинтересовался бы следующим вопросом: Форматирование именованных строк в C #
источник
источник
источник
Environment.NewLine
- смотрите другие ответы.const string
более новые версии .net позволяют вам использовать $ перед литералом, который позволяет вам использовать переменные внутри следующим образом:
источник
Если вы действительно хотите, чтобы строка New Line была константой, вы можете сделать это:
Пользователь ключевого слова readonly в C # означает, что эта переменная может быть назначена только один раз. Вы можете найти документацию по этому вопросу здесь . Это позволяет объявлять постоянную переменную, значение которой неизвестно до времени выполнения.
источник
Мне больше нравится "питонический путь"
источник
Если вы работаете с веб-приложением, вы можете попробовать это.
источник
Если я понимаю вопрос: пара,
"\r\n"
чтобы получить эту новую строку ниже вtextbox
. Мой пример сработал -Типичный ответ может быть
s1
s2
вtext box
использовании определенного стиля стиля.источник
Здесь Environment.NewLine не работает.
Я положил « < бр / > » в строке и работал.
Пример:
источник