Как я могу разделить и обрезать строку на части на одной линии?
Я хочу разбить эту строку:
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());