テキストボックスの入力文字列は、たとえば $10.00 です。電話する
decimal result;
var a = decimal.TryParse(text, NumberStyles.AllowCurrencySymbol, cultureInfo, out result);
cultureInfo
知られている ( en-US
)。なぜdecimal.tryParse
false を返しますか?
ありがとうございました。
テキストボックスの入力文字列は、たとえば $10.00 です。電話する
decimal result;
var a = decimal.TryParse(text, NumberStyles.AllowCurrencySymbol, cultureInfo, out result);
cultureInfo
知られている ( en-US
)。なぜdecimal.tryParse
false を返しますか?
ありがとうございました。
問題は、通貨記号自体を許可しましたが、それを正しく解析するために必要な他のプロパティ (小数点など) を省略したことです。実際に必要なのは次のNumberStyles.Currency
とおりです。
decimal.TryParse("$10.00", NumberStyles.Currency, cultureInfo, out result);
これを試してください。引数NumberStyles.Number
の値のビットごとの組み合わせに含める必要があります。style
decimal result;
var a = decimal.TryParse(text, NumberStyles.Number | NumberStyles.AllowCurrencySymbol, cultureInfo, out result);
小数点も許可するのを忘れました:
decimal result;
var enUS = new System.Globalization.CultureInfo("en-US");
var a = decimal.TryParse("$10.00", System.Globalization.NumberStyles.AllowCurrencySymbol | System.Globalization.NumberStyles.AllowDecimalPoint , enUS, out result);
Console.WriteLine(enUS);
Console.WriteLine(a);
Console.WriteLine(result);