如果单词之间有空格,我想分割一个字符串。
例如:
"Blood Doner Jack Stv 240 o+"
当我使用单个空格拆分它时,它会返回一个包含6个项目的数组对象,但如果我使用相同的文本集进行尝试,并且有2个空格代替1,则将数组增加到7:
"Blood Doner Jack Stv 240 o+"
所以我想知道如何删除双空格以及单个空格。
我知道我可以使用2个空格到1个空格的Replace()但是如果我有3个或4个空格怎么办?
提前致谢!
答案 0 :(得分:15)
您可以使用overload of String.Split
which takes a StringSplitOptions
:
string[] bits = text.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);
请注意,为避免在每次调用时创建char数组,您可以使用:
private static readonly char[] SplitSeparators = {' '};
...
string[] bits = text.Split(SplitSeparators,
StringSplitOptions.RemoveEmptyEntries);
答案 1 :(得分:4)
只需使用StringSplitOptions.RemoveEmptyEntries
:
var s = "Blood Doner Jack Stv 240 o+";
var arr = s.Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries);
或者您可以使用Regexp替换多个空格,而不是使用Split:
string str = System.Text.RegularExpressions.RegEx.Replace(s ,@"\s+"," ");
var arr = str.Split(new[] {" "}, StringSplitOptions.None);
答案 2 :(得分:1)
这将删除空格:
RegexOptions options = RegexOptions.None;
Regex regex = new Regex(@"[ ]{2,}", options);
tempo = regex.Replace(tempo, @" ");
然后你可以正常拆分
答案 3 :(得分:0)
string s1 = "Blood Doner Jack Stv 240 o+";
Regex r = new Regex(@"\s+");
string s2 = r.Replace(s1, @" ");
string[] s3 = s2.Split(' ');