拆分具有特定要求的字符串

时间:2015-10-22 14:42:27

标签: c# .net regex string split

假设我有字符串

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

我需要将它从' - 'char中拆分,但前提是前后的char是空格。

我不希望它在“太阳报”的冲刺中分裂,而是在“太阳 - 是”冲刺时分裂。

我用来分割的代码是

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

但是,我认为这显然是在分裂。如果在' - '

之前和之后有空格,我只需要拆分

由于

2 个答案:

答案 0 :(得分:3)

  

我需要将它从' - 'char中拆分,但前提是前后的char是空格。

您可以使用这样的非正则表达式解决方案:

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

结果:

enter image description here

在MSDN上查看有关String.Split Method (String[], StringSplitOptions)的更多详细信息。第一个参数是 separator ,它表示一个字符串数组,用于分隔此字符串中的子字符串,一个不包含分隔符的空数组,或null

StringSplitOptions.RemoveEmptyEntries从结果数组中删除所有空元素。您可以使用StringSplitOptions.None来保留空元素。

如果两端有硬空间或常规空间,可能会出现问题。然后,你宁愿选择这样的正则表达式解决方案:

string[] SongTokens = Regex.Split(Song, @"\p{Zs}+-\p{Zs}+")
            .Where(x => !String.IsNullOrWhiteSpace(x))
            .ToArray();

\p{Zs}+模式匹配任何Unicode“水平”空格,一次或多次出现。

答案 1 :(得分:2)

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