10

C#で「-100,100」などの文字列をlongに変換するにはどうすればよいですか。

私は現在、次のようなコード行を持っています

long xi = long.Parse(x, System.Globalization.NumberStyles.AllowThousands);

しかし、xが「負の数」の場合、これは壊れます。

私のアプローチ

long xi = long.Parse("-100,253,1", 
System.Globalization.NumberStyles.AllowLeadingSign & System.Globalization.NumberStyles.AllowThousands);

それが壊れたので、間違っていました。

4

2 に答える 2

10

これを試してみてください:

long xi = long.Parse(x, System.Globalization.NumberStyles.AllowThousands | System.Globalization.NumberStyles.AllowLeadingSign);

フラグを宣言しているため、ヒットする可能性のあるすべてのフラグを宣言する必要がある可能性があります。質問で指定された文字列値を使用して、このコードがテストプロジェクトで機能していることを確認しました。それがあなたの要件を満たしているかどうか私に知らせてください。単一のパラメーターで複数のフラグを宣言する場合は、|を使用します。それ以外の &

編集: http: //msdn.microsoft.com/en-us/library/cc138362.aspx 「ビットフラグとしての列挙型」の見出しの下にあるさまざまなビット演算子の説明を見つけます(これは私が思っていたよりも見つけるのが困難でした)。

于 2012-05-23T07:45:21.917 に答える
6

例外を回避するために、Parseの代わりにTryParseを使用します。

long xi;
if (long.TryParse(numberString, System.Globalization.NumberStyles.AllowThousands | System.Globalization.NumberStyles.AllowLeadingSign, null, out xi))
    {
        // OK, use xi
    }
    else
    {
        // not valid string, xi is 0
    }
于 2012-05-23T07:59:59.517 に答える