Как предотвратить добавление суффикса в пустые строки большой строки?C # - PullRequest
0 голосов
/ 25 марта 2019

Я хочу добавить префикс к каждой строке большой строки, исключая пустые строки. Код ниже добавляет префикс к пустым строкам. Я искал много сайтов, но я не могу найти правильное решение для этого. вот мой код:

string txt_input="abc \n \n efg \n \n \n hij";
string source = string.Join(Environment.NewLine, txt_input);

string result = string.Join(Environment.NewLine, source
                 .Split(new string[] { Environment.NewLine }, StringSplitOptions.None)
                 .Select(line => txt_prefix + line));

1 Ответ

0 голосов
/ 25 марта 2019

Ваш вопрос немного нечеткий, поэтому я буду работать в предположении, что ваш ввод выглядит как введенный вами txt_input:

string txt_input="abc \n \n efg \n \n \n hij";

, и вы хотите вывод вида:

var ouput = "myPrefix_abc \n \n myPrefix_efg \n \n \n myPrefix_hij";"

Примерно так должно работать:

string prefix = "myPrefix_";
string txt_input="abc \n \n efg \n \n \n hij";
var split = txt_input.Split(new[] {"\n"}, StringSplitOptions.None);
var prefixedList = new List<string>();
foreach(var line in split){
    if(string.IsNullOrWhiteSpace(line)) {
        prefixedList.Add(line);
        continue;
    }
    prefixedList.Add(prefix + line);
}
var output = string.Join("\n", prefixedList.ToArray());
Console.WriteLine(output);

Если вы действительно хотите, чтобы символы \n заменили вторую последнюю строку на

var output = string.Join("\\n", prefixedList.ToArray());

(обратите внимание на второй «\» перед «\ n»)

...