2012-01-06 8 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[]の代わりに.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

正確には、このメソッドは文字列ではなくchar []を必要とします。あなたは、最も簡単に、私は時々、あなたが文字列の変数になりたいことがあり、ためにToCharArrayを追加

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

を書くことができます。

文字列の長さが常に8文字以上であることが確実でない限り、問題があることを確認しています。少なくとも部分文字列の2番目の引数と同じ長さの文字列を確認する必要があります。そうでないと、インデックスから範囲外のインデックスを無作為に投げてしまう可能性が高くなります。

0

メソッドシグネチャは、charの数が必要であることを示しています。あなたはstringを提供しています。メソッドのドキュメントについては、hereを参照してください。

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

注文字の周りの単一引用符:

は代わりに、あなたのような何かを必要としています。

0

TrimEnd文字列ではなく、文字配列が必要です。 charリテラルは、一重引用符を使用して'x'と書かれています。

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

TrimEndのパラメータがparamsキーワードでマークされているので、あなたはパラメータを渡すには、2つの可能性があります:あなたのケースでは

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

または

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

を、これで十分:

s.TrimEnd('0') 
関連する問題