2012-09-19 2 views
1
string separator = " > "; 

string retStr = ""; 

int count = 0; 

foreach (string s in retList) 
{ 
    count++; 

    if(!string.IsNullOrEmpty(s)) 
    { 
     if (count < retList.Count) 
      retStr += s + separator; 
     else 
      retStr += s; 

      //count < retList.Count ? retStr += s + separator : retStr += s; 
     } 
} 

오류가있는 행의 결과는 오류 : Only assignment, call, increment, decrement, and new object expressions can be used as a statement입니다. 위의 if-case와 동등할까요?문자열 연결시 오류가 발생하는 경우 약식 문자

답변

4

retStr = count < retList.Count ? retStr + s + separator : retStr + s; 
3

이것은 잘못된 것입니다 :

retStr += s + separator 

그것은해야한다 : 함수의 끝에

someStringbuilder.append(s); someStringbuilder.append(separator); 

:

return someStringbuilder.ToString(); 
3
를 사용하여 다음과 같이 수행

String.Join

For example, if separator is ", " and the elements of value are "apple", "orange", "grape", and "pear", Join(separator, value) returns "apple, orange, grape, pear".

If separator is null, an empty string (String.Empty) is used instead. If any element in value is null, an empty string is used instead.

당신이 null 또는 빈 항목을 원하지 않는 경우 : MSDN에서 String.Join

return String.Join(separator, retList); 

에서보세요

return String.Join(separator, retList.Where(x => !string.IsNullOrEmptyOrWhiteSpace(x)); 
+1

을 또한이, 당신 'String.Join'을 호출하기 전에 일부 LINQ를 사용하여 빈/널 문자열을 제거하고자 할 수 있습니다. 'Return String.Join (separator, retList.Find (x =>! String.IsNullOrEmpty (x)) .ToArray()); ' – Matthew

+0

나는 당신이 당신의 코멘트를 게시했을 때 이것을 단지 추가했다. –

관련 문제