2010-05-10 6 views
4

일부 데이터를 제어 할 수 있지만 특정 필드의 문자 수를 30 자로 제한하려고합니다.바운드 값의 하위 문자열 검색

가능하면 aspx 페이지에서하고 싶습니다.

나는이 시도 :

Text='<%# String.Format("{0}", Eval("Title")).Substring(0,30) %> ' 

을하지만,이 오류를 가지고 : 당신의 캐릭터는 적어도 30 개 문자 길이없는 경우

Index and length must refer to a location within the string. Parameter name: length

답변

7

.

당신은 당신의 페이지에 보호 방법을 쓸 수 있습니다 - 영문 코드에서

protected string GetSubstring(string str, int length) 
{ 
    return str.Length > length ? str.Substring(0, length) : str; 
} 

전화를 같이 -

Text='<%# String.Format("{0}", GetSubstring(Eval("Title").ToString(), 30) %>' 
+3

을 사용하면 더 나아질 수 있습니다. 보호 된 문자열 GetSubstring (객체 obj, int 길이) { 문자열 str = obj.ToString(); return str.Length> length? str.Substring (0, length) : str; } ---- 텍스트 = '<% # GetSubstring (Eval ("Title"), 30) %>' 뭐라 구요? –

1

이 오류가 발생합니다. 먼저 코드 스 니펫에서 확인한 것처럼 필요하지 않은 문자를 잘라내야합니다.

String s = "hello"; 
if(s.Length > 30) 
{ 
    s.Substring(0,30); 
} 

그리고 한 줄에

: 시몬이 말한대로 문자열이 30 자보다 작은 경우,이 오류가 발생할 수 있습니다

s.Length > 30? s.Substring(0,30) : s; 
0

하위 문자열은 시작 인덱스와 길이를합니다. 그래서 문자열이 30 char보다 작지 않은지 확인해야합니다. 그렇지 않으면 오류가 발생합니다.