Как я могу разделить и обрезать строку на части на одной линии?

Я хочу разбить эту строку:

string line = "First Name ; string ; firstName";

в массив их обрезанных версий:

"First Name"
"string"
"firstName"

Как я могу сделать это все на одной строке? Ниже приведена ошибка "не может преобразовать тип void":

List<string> parts = line.Split(';').ToList().ForEach(p => p.Trim()); 

Ответ 1

Try

List<string> parts = line.Split(';').Select(p => p.Trim()).ToList();

FYI, метод Foreach принимает действие (принимает T и возвращает void) для параметра, а ваша лямбда возвращает строку как string.Trim возвращает строку

Метод расширения Foreach предназначен для изменения состояния объектов в коллекции. Поскольку строка неизменяема, это не будет иметь эффекта

Надеюсь, что это поможет; o)

Седрик

Ответ 2

Метод ForEach ничего не возвращает, поэтому вы не можете назначить его переменной.

Вместо этого используйте метод расширения Select:

List<string> parts = line.Split(';').Select(p => p.Trim()).ToList();

Ответ 3

Поскольку p.Trim() возвращает новую строку.

Вам нужно использовать:

List<string> parts = line.Split(';').Select(p => p.Trim()).ToList();

Ответ 4

Альтернативно попробуйте следующее:

string[] parts = Regex.Split(line, "\\s*;\\s*");

Ответ 5

попробуйте использовать Regex:

List<string> parts = System.Text.RegularExpressions.Regex.Split(line, @"\s*;\s*").ToList();

Ответ 6

Здесь метод расширения...

    public static string[] SplitAndTrim(this string text, char separator)
    {
        if (string.IsNullOrWhiteSpace(text))
        {
            return null;
        }

        return text.Split(separator).Select(t => t.Trim()).ToArray();
    }

Ответ 7

Использовать Regex

string a="bob, jon,man; francis;luke; lee bob";
			String pattern = @"[,;\s]";
            String[] elements = Regex.Split(a, pattern).Where(item=>!String.IsNullOrEmpty(item)).Select(item=>item.Trim()).ToArray();;			
            foreach (string item in elements){
                Console.WriteLine(item.Trim());