#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’)