Как я могу обрезать все элементы в списке?

Я пробую следующее

string tl = " aaa, bbb, ccc, dddd             eeeee";

var tags = new List<string>();
tags.AddRange(tl.Split(','));
tags.ForEach(x => x = x.Trim().TrimStart().TrimEnd());

var result = String.Join(",", tags.ToArray());

Но это не работает, теги всегда возвращаются как «aaa», «bbb».

Как я могу обрезать все элементы в список?

15
задан BrunoLM 20 August 2010 в 13:20
поделиться

4 ответа

// you can omit the final ToArray call if you're using .NET 4
var result = string.Join(",", tl.Split(',').Select(s => s.Trim()).ToArray());

Если вам нужна только строка окончательного результата, а не промежуточная коллекция, вы можете использовать регулярное выражение для очистки строки. Вам нужно будет выполнить тест, чтобы определить, превосходит ли регулярное выражение метод разделения-обрезки-соединения:

var result = Regex.Replace(tl, @"(?<=^|,) +| +(?=,|$)", "");
30
ответ дан 1 December 2019 в 00:41
поделиться

Ваша проблема в том, что между dddd и eeeee нет запятой. Если вы хотите, чтобы они были раздельными, вам нужно разделить на ' ', убрать запятые, а затем обрезать лишние пробельные символы.

string tl = " aaa, bbb, ccc, dddd                eeeee";

var result = t1.Split(' ').Where(s => !String.IsNullOrEmpty())
                          .Select(s => s.Replace(',','').Trim())
                          .ToArray();
1
ответ дан 1 December 2019 в 00:41
поделиться

Причина, по которой ваш подход не работает, заключается в том, что x является копией текущей строковой ссылки, обрабатываемой в ForEach Вызов (т.е. локальный для делегата). Следовательно, присвоение не влияет на элемент, указанный в списке.

7
ответ дан 1 December 2019 в 00:41
поделиться

Что происходит, так это то, что вы пытаетесь изменить коллекцию с помощью оператора foreach , что является недопустимым. Коллекции не могут быть изменены с помощью foreach .

Вам нужно будет изменить его как цикл for или, используя лямбды, вы можете использовать решение LukeH.

4
ответ дан 1 December 2019 в 00:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: