假设我有琴弦

string Song = "The-Sun - Is Red";


我需要将其与'-'字符分开,但前提是前后的字符是一个空格。

我不希望它在“ The-Sun”的破折号处分开,而是在“ Sun-Is”的破折号处分开。

我用来拆分的代码是

string[] SongTokens = Song.Split('-');


但是我相信这显然在一开始就分裂了。如果只在'-'前后有空格,我只需要拆分

谢谢

最佳答案

我需要将其与'-'字符分开,但前提是前后的字符是一个空格。


您可以使用如下非正则表达式解决方案:

string[] SongTokens = Song.Split(new[] {" - "}, StringSplitOptions.RemoveEmptyEntries);


结果:

c# - 特殊要求的分割线-LMLPHP

在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次或多次。

10-02 00:43