2016-01-21 40 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?英語(語言)之間。

測試正則表達式一個偉大的工具爲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

謝謝Cedric – Pavan

0

XD或者只是:

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

嘗試:

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

你將需要: using System.Text.RegularExpressions;

1

如果你不用打擾使用正則表達式,下面的解決方案工作正常。

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

Console.WriteLine(result); // English 
相關問題