2013-09-26 3 views
3

У меня есть строка с круглыми скобками, и я хочу извлечь только часть строки внутри круглых скобок.Принимая часть строки на основе нескольких разделителей?

Например, из следующей строки:

"abc(def)ghi" 

Я хотел бы получить "def", без скобок.

Я сделал некоторые поиски, но ближе всего, что я нашел до сих пор является String.split():

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

Но String.split только занимает 1 разделитель в то время. Есть ли лучший способ захватить только строку внутри круглых скобок?

+0

Вы можете использовать Regex, как показано здесь http://stackoverflow.com/a/8526268/187697 – keyboardP

+0

Вы можете добавить столько разделителей, как вам нравится: ДЕЛЕНИЕ ('(',') ') должен работать в вашем случае. – hendrik

ответ

7

Regex может помочь здесь

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- массив, независимо от того, в каком порядке они вводятся (как в массиве, так и в строке, подлежащей разделению). – ThoBa

+0

, если вы ожидаете, что части [0] будут «abc», части [1] будут «def» и частями [ 2], чтобы быть «ghi», тогда - да - это было бы, как сказал ThoBa. –

0

Просто еще одна альтернатива. Простой, двойной раскол

 string s = "abc(def)ghi"; 
     string []first = s.Split('('); 
     string[] second = first[1].Split(')'); 
     Console.WriteLine(second[0]); 
     Console.ReadLine(); 
Смежные вопросы