我正在处理一个需求,需要将字符串中的所有单词都放入数组中。"单词"被描述为任何非空间字符序列。字符串中可以有任意数量的空白字符。
输入示例:
" 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();