2013-03-26 3 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)'이면 어떨까요? –

+0

문자열을 분리하고 특수 문자 제거에 대한 .Remove를 사용했지만 적절한 문자열을 얻지 못했습니다. – Rocky

+0

이 문자열을 4 (4), 3 (42), 2 (x)와 같이 만들지는 않을 것입니다. 문자열을 표시했습니다. – Rocky

답변

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이 내 대답보다 훨씬 좋기 때문에 오류가 발생한다고 생각했습니다. –

+0

@HosseinNarimaniRad 감사합니다! 잘, 어쩌면 더 좋지는 않지만 더 컴팩트합니다 :) –

+1

고마워요. 저는 저에게 잘 작동하는 @lazyberezovsky 예제를 사용했습니다. – Rocky

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

+0

시도했습니다. 오류가 발생하지 않았습니다. –

+0

예, 시도했습니다. 오류가 없습니다! 'String.Join (** 문자열 구분 기호 **, ** 문자열 [] 값 **); ' – Pyromancer

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 
관련 문제