从字符串中获取单词数组



我正在处理一个需求,需要将字符串中的所有单词都放入数组中。"单词"被描述为任何非空间字符序列。字符串中可以有任意数量的空白字符。

输入示例:

"  Hello World!!  "
"Hello World!!"
"  Hello       World!!    "

在以上所有情况下,输出应该是["你好","世界!!"]

现在我已经尝试自己解决这个例子,并有以下代码:

public string[] GetWords(string s)
{
s=s.Trim();
while(s.Contains("  "))
{
s = s.Replace("  ", " ");
}
string[] input=s.Split(' ');
return input;
}

我使用上面的代码得到了正确的结果。我担心的是,有任何方法可以使代码变得干净或比目前更优化

使用以下代码片段:

var str = "  Hello World!!  ";
string[] array = str.Split(new Char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

结果将是["你好","世界!!"]

注:如果需要处理多个字符,则为new Char[] { ' ' }。否则,您可以使用以下

string[] array = str.Split(' ', StringSplitOptions.RemoveEmptyEntries);

我会使用一个正则表达式:

using System.Text.RegularExpressions;
...
public string[] GetWords(string s) =>
Regex.Matches(s, @"[^s]+")
.Cast<Match>()
.Select(x => x.Value)
.ToArray();

最新更新