我正在尝试拆分这样的字符串:
7 300685 1235 200017 200018 200019
在
7
300685
1235
200017
200018
200019
字符串数组。
我已经提出了这个正则表达式,但它也保留了白色空间:
var myStrings = System.Text.RegularExpressions.Regex.Split(linea, @"\s+");
那是因为我将任何字符串置于空格之前。如何不这样做,只保留白色字符串。
我知道通过从数组中删除空字符串很容易完成,但我想用正则表达式来完成。
答案 0 :(得分:6)
为什么不使用String.Split
方法?
var myStrings = linea.Split(new [] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
Split
和LINQ
没有RemoveEmptyEntries
选项的另一种方式:
var myStrings = linea.Split().Where(x => x.All(char.IsDigit)).ToArray();
还有一个RegexOption.IgnorePatternWhitespace
参数,您可以通过Regex.Split
方法删除空格:
var myStrings = Regex.Split(linea, @"\s+", RegexOptions.IgnorePatternWhitespace);
答案 1 :(得分:5)
我建议只使用string.Split
:
string[] s = yourString.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);
请参阅MSDN。
答案 2 :(得分:4)
您可以使用StringSplitOptions.RemoveEmptyEntries
方法使用String.Split
枚举;
返回值不包含包含空的数组元素 串
string s = "7 300685 1235 200017 200018 200019";
var array = s.Split(new []{" "}, StringSplitOptions.RemoveEmptyEntries);
foreach (var item in array)
{
Console.WriteLine(item);
}
输出将是;
7
300685
1235
200017
200018
200019
这里有 demonstration
。
答案 3 :(得分:2)
为什么这不适合你:
string str = "7 300685 1235 200017 200018 200019";
str.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
您还可以使用String.Trim删除一组空白字符的所有前导和尾随匹配项。
答案 4 :(得分:1)
试试这个
string[] splitvalue = string.Split(str, ' ', StringSplitOptions.RemoveEmptyEntries);
或:
string[] splitvalue = str.Split(null);
或:
string[] splitvalue = str.Split(new char[0]);
答案 5 :(得分:0)
var list = "Your String".Split(' ').Where(p =>!string.IsNullOrWhiteSpace(p));