2016-01-21 3 views
0

мне нужно, чтобы получить данные, которые вне скобокКак получить данные строки, которая находится вне скобок в C#

string data = "English(Language)"; 

string result= "English"; 

Результат должен отображаться текст «Английский».

Я пробовал с регулярным выражением, но не смог получить желаемый результат.

+3

Пожалуйста, сообщите, что именно вы пробовали и что пошло не так. Какое регулярное выражение вы пытались? Какой результат он дал? –

ответ

1

простого решение, которое я могу думать:

string data = "English(Language)"; 
string result = data.Substring(0, data.IndexOf('(')); 

То есть, конечно, если вам никогда не нужны данные в скобках.


Другой способ сделать это с помощью String.Split:

string data = "English(Language)"; 
string result = data.Split('(')[0]; 

Это чуть медленнее, чем в первом примере, так как она должна выделить память для массива.


Третий способ сделать это с помощью регулярных выражений:

string data = "English(Language)"; 
var pattern = new Regex("(\\w+\\s?)\\((\\w+)\\)", RegexOptions.Compiled); 

string result = pattern.Match(data).Groups[1].Value; 

Это самый медленный из всех примеров, но захватывает как «английский» и «Язык». Он также допускает пробелы \s? между English и (Язык).

Отличный инструмент для тестирования регулярных выражений - RegexPal, просто не забывайте избегать всего, когда переместите его на C#.


Here is a fiddle, testing the performance of all options.

+0

Thnaks die maus – Pavan

0

Привета принять взгляд на Split методах:

string data = "English(Language)"; 

string result= "English"; 

var value = data.Split('(').First(); 
Console.WriteLine (value); 

Результат:

English 
+0

Thank You Cedric – Pavan

0

XD или просто:

string data = "English(Language)"; 
string result = data.Replace("(Language)", ""); 
1

Try:

string input = "English(Language)"; 
string regex = "(\\(.*\\))"; 
string output = Regex.Replace(input, regex, ""); 

Вам нужно будет что: using System.Text.RegularExpressions;

1

Если вы не потрудитесь использовать Regex, нижеследующее решение работает нормально.

string data = "English(Language)"; 
string result = Regex.Match(data, @"(.*)\(.*\)").Groups[1].Value; 

Console.WriteLine(result); // English 
Смежные вопросы