我怎样才能拆分和修整一个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());