Как предотвратить добавление суффикса в пустые строки большой строки? C#

#c# #asp.net #webforms #prefix

#c# #asp.net #веб-формы #префикс

Вопрос:

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

 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. вы пробовали заменять «/ n» на » n»?

2. Ваш код не имеет особого смысла. Почему вы используете Join дважды? Вы хотите, чтобы после каждого символа была новая строка?

3. Учитывая, что у вас есть желаемая строка с символами новой строки в строковой переменной с именем text , вы могли бы сделать: IEnumerable<string> linesWithPrefix = text.Split(Environment.NewLine).Select(line => string.IsNullOrWhiteSpace(line) ? line : txt_prefix line);

Ответ №1:

Ваш вопрос немного нечеткий, поэтому я буду исходить из предположения, что ваш ввод выглядит как 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’)