Лучший синтаксис для создания многострочной строки
каков наилучший способ создания многострочной строки в C#?
Я знаю следующие способы:
Использование StringBuilder
var result = new StringBuilder().AppendLine("one").AppenLine("two").ToString()
выглядит слишком многословен.
С помощью @
var result = @"one
two"
выглядит уродливо и плохо отформатировано.
знаете ли вы лучшие способы?
8 ответов
Как насчет этого:
var result = string.Join(Environment.NewLine, new string[]{
"one",
"two"
});
это немного болезненно и, возможно, излишне, но это дает возможность сохранить разделение строк в вашем коде.
Чтобы немного улучшить ситуацию, вы можете использовать вспомогательный метод:
static string MultiLine(params string[] args) {
return string.Join(Environment.NewLine, args);
}
static void Main(string[] args) {
var result = MultiLine(
"one",
"two"
);
}
как насчет этого?
var result = "one\ntwo";
Если вы суетитесь о OS-конкретных концовках строк, используйте Format
:
var result = String.Format("one{0}two", Environment.NewLine);
(Ну, "суетливый" -это не то слово: при работе с текстовыми файлами часто желательны или даже необходимы концовки строк, специфичные для ОС, при работе с устаревшим программным обеспечением.)
"Best" - очень открытая точка.
вы :
- производительность кода
- скорость кодер может писать
- возможность для другого кодера понять это легко
- возможность для другого кодера легко изменить его
все это имеет большое значение для "лучшего" способа сделать что-то.
Я бы сказал, что это зависит от того, что вам нужно...
но для упрощения я бы пошел с:
var s = new StringBuilder();
s.Append("one");
s.Append("two");
s.ToString();
но так как мы не знаем, для чего он вам нужен. Это довольно трудно дать лучшие подсказки
вы не должны определять большие строки в исходном коде. Вы должны определить его во внешнем текстовом файле:
string s = File.OpenText("myfile.txt").ReadToEnd();
риффы от что сказал @codymanix, вы можете поместить длинную многострочную строку в файл ресурсов. Это может быть проще для определенных сценариев развертывания, так как текстовый "файл" будет включен в ваш DLL / EXE.
иногда вам нужно более одной строки. Я использую окружающую среду.NewLine но я поместил его в метод, чтобы умножить его. :)
private string newLines(int multiplier)
{
StringBuilder newlines = new StringBuilder();
for (int i = 0; i < multiplier; i++)
newlines.Append(Environment.NewLine);
return newlines.ToString();
}