2013-03-06 3 views
1

나는 내가 할 수있는이에 알고"AA, BB, CC"문자열은 "AA", "BB", "CC" ' "를 원합니다.

 string input = "AA,BB,CC"; 
     string output = ""; 
     foreach (var item in input.Split(',')) 
     { 
      output += string.Format("'{0}',", item); 
     }; 
     output =output.TrimEnd(','); 

     Assert.AreEqual("'AA','BB','CC'", output); 

그러나이 일을 더 똑똑하고 더 빠른 방법이 될 수 있습니다.

어떤 아이디어 주셔서 감사합니다.

Larsi

+0

고맙습니다. . 수락 된 응답은 3 배 이상 빠릅니다. 다른 시도는 내 시도보다 약 2 배 빠릅니다. 하지만 물어 보는 주된 이유는 내가 좀 더 우아한 문법을 ​​기대하고 있었기 때문입니다. 고마워! – Larsi

답변

7

하지 마십시오을 이 속도가 느려지지만 짧을 지 알 수 있습니다.

string output = "'" + input.Replace(",", "','") + "'"; 
+0

+1 나는 속임수가 가장 빠를 것이라고 생각합니다. –

+0

+1 단순히 최고라고 생각합니다. – Kaf

+0

+1 빠른 프로파일 링을 한 것뿐입니다.이 한 줄은 Split 단독 호출보다 빠릅니다. – Lumen

1
output = String.Join(",", input.Split(',').Select(s => "'" + s + "'")); 
2

나는 그것이 당신이 가지고있는 코드보다 빠를 것이다 모르겠지만, 당신은 LINQ를 사용하고 같은 것을 쓸 수 있습니다 :

string output = String.Join(",", 
    input.Split(',').Select(token => "'" + token + "'")); 
2
output = String.Join(",", input.Split(',').Select(s => "'" + s + "'")); 
+0

이것은 컴파일 할 수 없습니다. –

+0

예, 방금했습니다. – PhonicUK

+1

아, 제 생각에는 당신이'Split (',')'* not *'Split (",")' – Kaf

관련 문제