2013-03-26 148 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