我想這條線拆分:如何在一行中將字符串拆分並修剪成部分?
string line = "First Name ; string ; firstName";
到他們的修剪版本的數組:
"First Name"
"string"
"firstName"
我怎樣才能做到這一切在同一行?下面給我一個錯誤「無法轉換爲void類型」:
List<string> parts = line.Split(';').ToList().ForEach(p => p.Trim());
我想這條線拆分:如何在一行中將字符串拆分並修剪成部分?
string line = "First Name ; string ; firstName";
到他們的修剪版本的數組:
"First Name"
"string"
"firstName"
我怎樣才能做到這一切在同一行?下面給我一個錯誤「無法轉換爲void類型」:
List<string> parts = line.Split(';').ToList().ForEach(p => p.Trim());
的ForEach
方法不返回任何東西,所以你不能分配給一個變量。
使用Select
擴展方法代替:
List<string> parts = line.Split(';').Select(p => p.Trim()).ToList();
因爲p.Trim()返回一個新字符串。
您需要使用:
List<string> parts = line.Split(';').Select(p => p.Trim()).ToList();
或者試試這個:
string[] parts = Regex.Split(line, "\\s*;\\s*");
這是一個好主意,但是,我相信錯過了字符串末尾的任何尾隨空白,對嗎? – jrichview 2017-06-01 18:13:06
下面是一個擴展方法...
public static string[] SplitAndTrim(this string text, char separator)
{
if (string.IsNullOrWhiteSpace(text))
{
return null;
}
return text.Split(separator).Select(t => t.Trim()).ToArray();
}
嘗試使用正則表達式:
List<string> parts = System.Text.RegularExpressions.Regex.Split(line, @"\s*;\s*").ToList();
使用正則表達式
string a="bob, jon,man; francis;luke; lee bob";
\t \t \t String pattern = @"[,;\s]";
String[] elements = Regex.Split(a, pattern).Where(item=>!String.IsNullOrEmpty(item)).Select(item=>item.Trim()).ToArray();; \t \t \t
foreach (string item in elements){
Console.WriteLine(item.Trim());
結果:
鮑勃
喬恩
人
弗朗西斯
盧克
李
擺錘
解釋圖案[,; \ S]:匹配任一之一發生, ;或空格字符
我認爲問題標題應該是'我怎樣'而不是'我爲什麼'? – rahul 2009-11-13 10:10:21
由於'ForEach'在當前IEnumerable實例上工作並返回'void',所以返回錯誤。 – Majkel 2009-11-13 10:13:05