如何在一行中将字符串拆分并修剪成部分?
问题描述:
我想这条线拆分:如何在一行中将字符串拆分并修剪成部分?
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*");
+0
这是一个好主意,但是,我相信错过了字符串末尾的任何尾随空白,对吗? – 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