2012-01-06 2 views
0

나는 점점 오전 오류를 트리밍 할 수 없습니다는 문자열을 얻을 다음과 변수

var a = id.Substring(0,8).TrimEnd("0").Length 

는 내가 뭘 원하는 ID라는 내 문자열을하는 것입니다. 그것을 8 자로 변환 한 다음 꼬리말 "0"을 없애고 길이를 확인하십시오.

오류 메시지는 다음과 같습니다 내가 뭘 잘못 볼 수 없습니다

Error 2 The best overloaded method match for 'string.TrimEnd(params char[])' has some invalid arguments 

. 누구든지 아이디어가 있습니까?

답변

4

char[]as the documentation mentions 대신 .TrimEnd() 메서드 문자열을 전달하므로 잘못되었습니다. 심지어 일을 더 읽을 수 있도록 단일 인용 문자로 전달할 수 있습니다

var a = id.Substring(0,8).TrimEnd(new char[]{'0'}).Length; 

:

당신은 뭔가를해야합니다.

var a = id.Substring(0,8).TrimEnd('0').Length; 
+2

명시 적 배열은 반드시 필요한 것은 아닙니다. –

+1

'char []'을 명시 적으로 생성 할 필요가 없습니다. 이것은 params 배열 매개 변수입니다. –

+0

그래, 나는 그것에 추가했다. –

0

는 0 주위에 작은 따옴표를보십시오 :

var a = id.Substring(0, 8).TrimEnd('0').Length; 
1

이것은 Substring 호출과는 아무 상관이 없습니다. 당신이 이 생성되지 않도록하려는 당신이 마이크로 최적화에 대한 우려된다면

"foo".TrimEnd('0'); 

:이 작동합니다 -

컴파일러 오류 메시지에서
// Broken 
"foo".TrimEnd("0"); 

봐 :이 중 하나가 작동하지 않습니다 각 호출에 새로운 배열 :

그것이 말하는 정확히
private static readonly char[] ZeroForTrimming = {'0'}; 

... 

var a = id.Substring(0,8).TrimEnd(ZeroForTrimming).Length; 
0

이 방법은 문자 []가 아닌 문자열을 원한다. 가장 쉽게 쓸 수 있습니다

var a = id.Substring(0,8).TrimEnd("0".ToCharArray()).Length; 

내가 ToCharArray를 추가 한 이유는 문자열을 가변적으로 지정할 때가 있기 때문입니다.

해당 문자열의 길이가 8 자 이상이어야한다는 것이 확실하지 않으면 문제가 있는지 확인하십시오. 적어도 부분 문자열의 두 번째 인수만큼 문자열을 확인해야합니다. 그렇지 않으면 무작위로 예외 범위를 벗어나는 인덱스를 던질 가능성이 큽니다.

0

메서드 서명은 char이 필요하다는 것을 보여줍니다. string을 제공했습니다. 방법에 대한 설명은 here을 참조하십시오.

var a = id.Substring(0, 8).TrimEnd('0').Length 

주 캐릭터 주위에 작은 따옴표 :

대신, 당신은 뭔가를해야합니다.

0

TrimEnd에는 문자열이 아닌 문자 배열이 필요합니다. char 리터럴은 작은 따옴표를 사용하여 'x'으로 작성됩니다.TrimEnd의 매개 변수가 params 키워드로 표시되기 때문에

var a = id.Substring(0,8).TrimEnd('0').Length; 

, 당신은 매개 변수를 전달하는 두 가지 가능성이 있습니다

s.TrimEnd(new char[]{'0',' ',';'}) 

또는 경우

s.TrimEnd('0',' ',';') 

을,이 충분하다 :

s.TrimEnd('0')