2013-09-27 34 views
1
myString= "First?Second Third";  
String[] result = Regex.Split(myString, @"()\?"); 

应导致: 首先, 二,三 Regex.Split on“()”and“?”

我缺少什么? (我还需要括号来分割别的东西)

+0

你告诉我们你期望的是什么,但不是你得到的。 – Spaceghost

+1

为什么要使用正则表达式? 'String [] result = myString.Split('','?');' –

回答

5

我想用(),你的意思是空白。你不需要任何捕获组。只要使用变更或字符类:

String[] result = Regex.Split(myString, @"\s|\?"); 

// OR 
String[] result = Regex.Split(myString, @"[\s?]"); 
+0

谢谢!我不知道如何使用“|”分裂。我将它更改为@“\?|()”,因此它将空间保留为单独的条目。 – Daniel

+0

@Milos。不客气:) –

0

你需要围绕内部[]那些字符,以创建一系列他们。 [\s\?]这将各执:

  1. 空间
  2. ?

您可以使用\s处理 “任何” 空白字符。

3

使用字符串方法:

myString= "First?Second Third"; 
String[] result = myString.Split(' ','?'); 
+0

谢谢。我没有提及我需要空间字符作为数组中的单独条目,所以我最终使用了正则表达式。它现在有效。 – Daniel

1

我不是很确定你正在尝试用引号做。请记住,在C#中,括号用于表示正则表达式中的逻辑组,它们不会转义空格。相反,你想分割一组明确的字符,用括号[]表示。您应该使用以下模式进行分割:

String[] result = Regex.Split(myString, @"[\?\s]"); 

请注意\?是一个逃脱的空间(就像你原来的那样)。空白字符将以\ s形式转义。因此,我的解决方案实质上是说将任何明确指示的字符(基于[])上的字符串分开,并将这些字符列为? (转义为\?)和“”(转义为\ s)。

编辑经过信息来源OP:

: 我也看到了,在回答这个职位,你editted上评论说你想要的白空间的逻辑分组,在这种情况下,我会去后
String[] result = Regex.Split(myString, @"[\?(\s)]"); 
+0

很好的答案,+1。 – Brian