2013-06-14 4 views
0

Substring() 함수가 제대로 작동하지 않는 이유에 대해 조금 의아해합니다. 문자열의 끝에있는 쉼표에서 단락되지 않습니다. .NET v4.5에서 C# Substring() 버그?

public static string OrderByClauseBuilder(string parmSortByColumn) 
{ 
    if (parmSortByColumn.LastIndexOf(",") > -1) { 
     parmSortByColumn.Substring(0, parmSortByColumn.LastIndexOf(",")); 
    } 
    return parmSortByColumn; 
} 
protected void Page_Load(object sender, EventArgs e) 
{ 
    string sqlAsk = ""; 
    string value = "stocknumber asc,"; 

    sqlAsk = OrderByClauseBuilder(value); 
} 
+0

LastIndex (LastIndexOf)를 수정하여 시작할 수 있습니다. –

+0

질문을 게시 할 때 오타가 잘못되었습니다. – fletchsod

+0

@fletchsod, 그러한 명백한 질문은 [the docs] (http://msdn.microsoft.com/en-us/library/aka44szs.aspx)를 참조하십시오. (이 메서드는 현재 인스턴스의 값을 수정하지 않고 현재 문자열의 startIndex 위치에서 시작하여 길이가 문자 인 새로운 문자열을 반환합니다. ") –

답변

7

문자열은 .NET에서 불변 ... 아래 예제 코드를 참조하고, 문자열의 각 방법은 새로운 반환을 수정했습니다. 그러므로 약간의 조정을해야합니다 :

public static string OrderByClauseBuilder(string parmSortByColumn) 
{ 
    if (parmSortByColumn.LastIndexOf(",") > -1) { 
     parmSortByColumn = parmSortByColumn.Substring(0, parmSortByColumn.LastIndexOf(",")); 
    } 
    return parmSortByColumn; 
} 
+3

+1. 그리고 일반적으로'return parmSortByColumn.TrimEnd (',');', IMO를 사용하는 것이 더 쉬울 것입니다. :) –

+1

@ Trustme-I'maDoctor, 완전히 동의합니다. Substring에 대한 질문이있었습니다. – Andrei

+0

나도 알아, 나도 알아, OP가 그의 마음을 바꿀지도 모른다. –