假设我有琴弦
string Song = "The-Sun - Is Red";
我需要将其与'-'字符分开,但前提是前后的字符是一个空格。
我不希望它在“ The-Sun”的破折号处分开,而是在“ Sun-Is”的破折号处分开。
我用来拆分的代码是
string[] SongTokens = Song.Split('-');
但是我相信这显然在一开始就分裂了。如果只在'-'前后有空格,我只需要拆分
谢谢
最佳答案
我需要将其与'-'字符分开,但前提是前后的字符是一个空格。
您可以使用如下非正则表达式解决方案:
string[] SongTokens = Song.Split(new[] {" - "}, StringSplitOptions.RemoveEmptyEntries);
结果:
在MSDN上查看有关
String.Split Method (String[], StringSplitOptions)
的更多详细信息。第一个参数是分隔符,代表一个分隔该字符串中子字符串的字符串数组,一个不包含分隔符的空数组或null
。StringSplitOptions.RemoveEmptyEntries
从结果数组中删除所有空元素。您可以使用StringSplitOptions.None
保留空白元素。但是,如果两端都有硬空间或规则空间,则可能会出现问题。然后,您宁愿选择这样的正则表达式解决方案:
string[] SongTokens = Regex.Split(Song, @"\p{Zs}+-\p{Zs}+")
.Where(x => !String.IsNullOrWhiteSpace(x))
.ToArray();
\p{Zs}+
模式与任何Unicode“水平”空白匹配1次或多次。