2013-09-26 126 views
3

我有一個帶括號的字符串,我希望僅提取括號內的字符串部分。基於多個分隔符參與字符串的一部分?

例如,從以下字符串:

"abc(def)ghi" 

我想獲得"def",沒有括號。

我已經做了一些搜索,但到目前爲止,我已經找到了最接近的事是String.Split():

string s = "3,2,4,5,6"; 
string[] words = s.Split(','); 

但String.Split只需要1個分隔在一個時間。有沒有更好的方法只抓住括號內的字符串?

+0

您可以使用正則表達式像這裏http://stackoverflow.com/a/8526268/187697顯示 – keyboardP

+0

只要你喜歡你可以添加儘可能多的分隔符的一個:s.Split('( ',')')應該適用於你的情況。 – hendrik

回答

7

正則表達式可以幫助這裏

string input = "abc(def)ghi"; 
var def = Regex.Match(input, @"\((.+?)\)").Groups[1].Value; 
1

您可以在多個字符分割:s.Split("()".ToCharArray())。不知道這對您是正確的解決方案,還是正則表達式。

+0

你不需要將字符串轉換爲字符數組。你可以簡單地寫s.Split('(',')') – hendrik

1

你可以傳入一個字符數組來分割。

像這樣:

string s = "abc(def)ghi"; 
char[] chars = new char[] { '(', ')' }; 
string[] parts = s.Split(chars); 
+0

這會給'abc)def一個正確的結果嗎(ghi'? –

+0

只要字符匹配char-如果您希望零件[0]爲「abc」,零件[1]爲「def」,零件[0]爲零,則無論它們以何種順序輸入(無論是在數組中還是在要拆分的字符串中) – ThoBa

+0

。 2]是「ghi」,那麼 - 是的 - 它會 - 就像ThoBa所說的那樣 –

0

只是另一種選擇。操作簡單,雙分裂

 string s = "abc(def)ghi"; 
     string []first = s.Split('('); 
     string[] second = first[1].Split(')'); 
     Console.WriteLine(second[0]); 
     Console.ReadLine(); 
相關問題