我怎样才能拆分和修整一个string成部分都在一行?

我想分割这一行:

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

进入他们的修剪版本的数组:

 "First Name" "string" "firstName" 

我怎么能做到这一切在一条线上? 以下给我一个错误“不能转换typesvoid”:

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

尝试

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

仅供参考,Foreach方法需要一个Action(需要T并返回void)作为参数,并且您的lambda返回一个string作为string.Trim返回一个string

Foreach扩展方法是为了修改集合中对象的状态。 由于string是不可变的,所以这将不起作用

希望它有帮助; o)

塞德里克

ForEach方法不返回任何东西,所以你不能把它分配给一个variables。

改为使用Select扩展方法:

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

因为p.Trim()返回一个新的string。

你需要使用:

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

或者试试这个:

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

尝试使用正则expression式:

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

这是一个扩展方法…

  public static string[] SplitAndTrim(this string text, char separator) { if (string.IsNullOrWhiteSpace(text)) { return null; } return text.Split(separator).Select(t => t.Trim()).ToArray(); } 

使用正则expression式

 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());