myString= "First?Second Third";
String[] result = Regex.Split(myString, @"()\?");
应导致: 首先, 二,三 Regex.Split on“()”and“?”
我缺少什么? (我还需要括号来分割别的东西)
myString= "First?Second Third";
String[] result = Regex.Split(myString, @"()\?");
应导致: 首先, 二,三 Regex.Split on“()”and“?”
我缺少什么? (我还需要括号来分割别的东西)
我想用()
,你的意思是空白。你不需要任何捕获组。只要使用变更或字符类:
String[] result = Regex.Split(myString, @"\s|\?");
// OR
String[] result = Regex.Split(myString, @"[\s?]");
谢谢!我不知道如何使用“|”分裂。我将它更改为@“\?|()”,因此它将空间保留为单独的条目。 – Daniel
@Milos。不客气:) –
你需要围绕内部[]
那些字符,以创建一系列他们。 [\s\?]
这将各执:
?
您可以使用\s
处理 “任何” 空白字符。
使用字符串方法:
myString= "First?Second Third";
String[] result = myString.Split(' ','?');
谢谢。我没有提及我需要空间字符作为数组中的单独条目,所以我最终使用了正则表达式。它现在有效。 – Daniel
我不是很确定你正在尝试用引号做。请记住,在C#中,括号用于表示正则表达式中的逻辑组,它们不会转义空格。相反,你想分割一组明确的字符,用括号[]表示。您应该使用以下模式进行分割:
String[] result = Regex.Split(myString, @"[\?\s]");
请注意\?是一个逃脱的空间(就像你原来的那样)。空白字符将以\ s形式转义。因此,我的解决方案实质上是说将任何明确指示的字符(基于[])上的字符串分开,并将这些字符列为? (转义为\?)和“”(转义为\ s)。
编辑经过信息来源OP:
: 我也看到了,在回答这个职位,你editted上评论说你想要的白空间的逻辑分组,在这种情况下,我会去后String[] result = Regex.Split(myString, @"[\?(\s)]");
很好的答案,+1。 – Brian
你告诉我们你期望的是什么,但不是你得到的。 – Spaceghost
为什么要使用正则表达式? 'String [] result = myString.Split('','?');' –