2013-09-27 32 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