web-dev-qa-db-ja.com

Convert.ToInt32()コンマ付きの文字列

私は時々、1,500そして、これをIntに変換する必要があります。現在例外がスローされています。誰かがこれを修正する方法を教えてくれます。

51
Emil Davtyan

int.Parse および NumberStyles.AllowThousands フラグ:

int num = int.Parse(toParse, NumberStyles.AllowThousands);

または int.TryParse 操作が成功したかどうかを知らせます:

int num;
if (int.TryParse(toParse, NumberStyles.AllowThousands,
                 CultureInfo.InvariantCulture, out num))
{
    // parse successful, use 'num'
}
136
CMS

Decimal.Parse()を使用してから、結果をintにキャストできます。これは現在のカルチャでも機能しますが、使用するCultureInfoを指定することもできます。すべてが.NETに組み込まれているコンマ、小数点などを手動で処理する必要はありません。

6
Sam

コンマを削除するという総当たりの提案は何ですか??文字列が「1,1,1」のような場合はどうなりますか?これは有効な番号ですか?コンマを削除すると、有効な数値になり、変換が意味的に正しくなくなります。

NumberStylesが存在する理由があり、Int.Parse()メソッドは数値スタイルを考慮して、または考慮せずに解析できます。

3
Daria

Intに変換する前にreplace(';', '')を実行できます。

2
liya

さまざまな国のルールを心配する必要がない場合(たとえば、一部の桁区切り記号の代わりにコンマを小数点位置として使用する場合)、コンマを最初に削除します。

例えば

string nastyNumber = "1,234";
int result = int.Parse(nastyNumber.Replace(",", ""));

(浮動小数点が必要な場合は、intをdoubleに置き換えます)

2
Will

コードを使用できます

int num = Strings.Replace(str, ",", string.Empty);

これにより、 "、"のすべての出現が ""(空の文字列)に置き換えられます。 1,000,000回が1000000回

1
Simpa

Convert.ToInt32()を呼び出す前にコンマを_String.Empty_で置き換えるか、Int32.Parse()またはInt32.TryParse()を_NumberStyles.AllowThousands_とともに使用してパラメーター。

Int32.Parse

Int32.TryParse

0
Jon Sagara