使用正则表达式通过逻辑运算符拆分字符串

3

I've the following string:

string text = "Hello && my || Name & is | Tom"

现在我想将字符串分成不同的部分,但不带单词之间的逻辑运算符。我尝试了以下方法,但只得到了一个包含整个文本的字符串。
String[] result= Regex.Split(text, @"\&&\||\&\|");

有什么问题吗?

期望的输出是一个包含5个字符串的数组:

  • Hello
  • my
  • Name
  • is
  • Tom

1
为什么不使用s.Split(new[] { '|', '&' }, StringSplitOptions.RemoveEmptyEntries) - Alessandro D'Andria
我认为正则表达式的性能更高? - Maddy
2个回答

5
没有正则表达式的解决方案,只需要拆分字符串即可:
String[] result = text.Split(new Char[] { '|', '&' }, StringSplitOptions.RemoveEmptyEntries);

它还会在&&上分割,而不仅仅是& - Amit Joki
@Amit Joki:它将在&&上分割两次,然后删除空部分。 - Dmitry Bychenko
好的,我明白了。所以我想这就是为什么有“删除条目”选项的原因吧。 - Amit Joki
也许您还想按空格字符(如 ' ')拆分,以便生成的字符串没有前导空格。 - sloth
@sloth 对于这个问题,String.Trim 就足够了。 - Amit Joki

3

请将您的代码更改为以下内容:

String[] result= Regex.Split(text, @"\s*[|&]+\s*");

这将根据一个或多个 |& 符号拆分您的输入。 \s* 匹配零个或多个空格,[|&]+ 匹配一个或多个 |& 符号。


谢谢,那个方法可行。最后一个问题:如果我还想根据 " 分割文本,该怎么做? - Maddy
只需将 " 添加到字符类中即可。@"\s*[|&""]+\s*" - Avinash Raj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接