2013-03-26 198 views
1

我有一個字符串4(4X),4(4N),3(3X)從這個字符串我想使字符串4,4,3。如果我得到字符串4(4N),3(3A),2(2X)那麼我想讓我的字符串4,3,2如何從字符串中刪除特殊字符並創建新字符串?

請有人告訴我如何解決我的問題。

+0

如果字符串是'4(4),3(42),2(x)'? – 2013-03-26 06:41:25

+0

我分割字符串和使用。刪除特殊字符,但沒有得到正確的字符串 – Rocky 2013-03-26 06:42:30

+0

我不會創建像這樣的字符串4(4),3(42),2(x),總是我會得到字符串,因爲我已經顯示 – Rocky 2013-03-26 06:43:24

回答

3

這Linq查詢從輸入字符串的每個部分選擇子,從開頭開始直到第一個開括號:

string input = "4(4N),3(3A),2(2X)"; 
string result = String.Join(",", input.Split(',') 
            .Select(s => s.Substring(0, s.IndexOf('(')))); 
// 4,3,2 
+0

+1比我的回答好得多 – 2013-03-26 06:47:00

+0

@HseseinNarimaniRad謝謝!好吧,也許不是更好,但更緊湊:) – 2013-03-26 06:47:52

+1

謝謝所有人,我用@lazyberezovsky例子它的工作對我很好 – Rocky 2013-03-26 07:06:53

2

這可能會幫助:

string inputString = "4(4X),4(4N),3(3X)"; 
string[] temp = inputString.Split(','); 
List<string> result = new List<string>(); 

foreach (string item in temp) 
{ 
    result.Add(item.Split('(')[0]); 
} 

var whatYouNeed = string.Join(",", result); 
+0

我想你會在這部分出錯'var whatYouNeed = string.Join(「,」,result);' – Pyromancer 2013-03-26 06:52:50

+0

我試過了。沒有錯誤被拋出。 – 2013-03-26 06:53:46

+0

是的,我試過了,它沒有錯誤!我以爲它會得到一個錯誤,因爲'String.Join(** String Separator **,** String [] Value **);' – Pyromancer 2013-03-26 06:56:59

0

您可以使用regular expressions

String input = @"4(4X),4(4N),3(3X)"; 
String pattern = @"(\d)\(\1.\)"; 
// () - first group. 
// \d - one number 
// \(and \) - braces. 
// \1 - means the repeat of first group. 
String result = Regex.Replace(input, pattern, "$1"); 
// $1 means, that founded patterns will be replcaed by first group 
//result = 4,4,3 
相關問題