2013-02-14 4 views
2

의 내가 같은 문자열 foreach는 루프 있다고 가정 해 봅시다 : a,b,c,d,e,하지만 내가 원하는 마지막 쉼표없이 a,b,c,d,e입니다 :문자열을 병합하는 가장 좋은 방법은 무엇입니까?

String newStr=''; 
String str='a b c d e'; 
foreach(String strChar in str.split(' ')) { 
    newStr+=strChar+','; 
} 

결과가 같은 것을 할 것이다. 나는 보통 마지막 쉼표를 나눈다. 그러나 이것은 추악하고 과체중이 보인다. 이것을 할 수있는 가벼운 방법이 있습니까?

이 질문에 추가 : "와"별자리에 결과를 추가하는 쉬운 솔루션이 있습니까 : a, b, c, d and e 사용자 출력?

p.s .: 예에서 replace-method를 사용할 수 있음을 알고 있지만 대부분의 경우 SQL 문자열을 작성할 때 사용할 수 없기 때문에 찾고있는 것이 아닙니다.

답변

11

나는 string.Join을 사용합니다 :

string newStr = string.Join(",", str.Split(' ')); 

다른 방법으로는 처음으로 라운드에 하지를 루프의 몸의 시작에 구분 기호를 추가 할 수 있지만 수 있습니다.

그래도 계속 손으로 수행하려면 StringBuilder을 사용하는 것이 좋습니다. 실제로 StringBuilder을 사용하면 무조건 구분 기호를 추가 한 다음 끝에 길이를 줄여 해당 끝을 트림 할 수 있습니다.

는 또한 썼다 :

예를 들어 당신이 SQL 문자열 그것은 매우 드물게이 같은 SQL 문자열을 구축하는 것이 좋습니다 없다

를 빌드 할 때. 특히 이 아닌 사용자 입력 문자열을 사용하십시오. 대신 매개 변수화 된 SQL을 사용하십시오.

String str='a b c d e'; 
var newStr = string.Join(",", str.Split(' ')); 
+0

ORM이란 무엇입니까? 객체 역할 모델링? –

+0

@JanHommes http://en.wikipedia.org/wiki/Object-relational_mapping – asawyer

+0

저는 LINQ를 사용하고 있습니다. ORM입니까? –

2

string.Join 당신의 친구가 될 수있는 기존 ORM을 사용하는 것이 더 나은 경우에 ORM 코드의 영역입니다 ... 먼저,이 정렬의 문자열 조작에 StringBuilder를 사용해야합니다. 두 번째로, 그것은 단지 삽입 조건에 if 조건부입니다.

System.Text.StringBuilder newStr = new System.Text.StringBuilder(""); 
string oldStr = "a b c d e"; 

foreach(string c in oldStr.Split(' ')) { 
    if (newStr.Length > 0) newStr.Append(","); 
    newStr.Append(c); 
} 
1
newStr = String.Join(",", str.split(' ')); 
0

: 건물의 SQL은 일반적으로 자신의 : 롤보다가

1

당신은 Regex을 사용할 수 있습니다 쉼표

string newst = Regex.Replace(input, " ", ","); 
+1

왜'regex.Replace'가'string.Replace' 일 때 귀찮아서 표현식이 너무 단순합니까? – juharr

2
여기

마지막 값 앞에있다 "와"어디에 당신이 그것을 할 수있는 방법으로 공백을 대체합니다.

var vals = str.Split(' '); 
var ans = vals.Length == 1 ? 
      str : 
      string.Join(", ", vals.Take(vals.Length - 1))) + ", and " + vals.Last(); 
4

마지막으로 제외한 모든 문자열 다음에 쉼표를 추가하는 것으로 문제를 설명하고 있습니다. 첫 번째 문자열이 아닌 모든 문자열 앞에 쉼표를 붙이는 것으로 특성화하는 것이 좋습니다. 그것은 더 쉬운 문제입니다.

어려운 버전에는 내 블로그와이 질문에 수십 가지 해결책이 있습니다.

Eric Lippert's challenge "comma-quibbling", best answer?

관련 문제