- ベストアンサー
C#のToString("c")で通貨記号が取れない理由と解決方法
- C#でテキストボックスに金額を記入し、数値として使用する方法について説明します。
- "ToString("c")"を使用する際に通貨記号が取れない理由と、代替の方法について解説します。
- 通貨記号を取り除くためには、文字列操作を行う必要があります。具体的なコード例を提供します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
先の回答にも書きましたが,NumberStyles.Currencyを使ってください。 これはMSDNにもあるとおり,AllowCurrencySymbolやAllowLeadingSign,AllowThousandsを含みます。 AllowThousandsを含むため,","を削除する処理も不要です。
その他の回答 (2)
- Yune-Kichi
- ベストアンサー率74% (465/626)
.ToString("c")の逆操作がしたい,ということでしょうか。 それであれば,Int32.ParseやInt32.TryParseにNumberStyles.Currencyを与えれば可能です。 MSDN: Int32.Parse メソッド (String, NumberStyles) (System) http://msdn.microsoft.com/ja-jp/library/c09yxbyt.aspx MSDN: Int32.Parse メソッド (String, NumberStyles, IFormatProvider) (System) http://msdn.microsoft.com/ja-jp/library/9yaffedz.aspx MSDN: Int32.TryParse メソッド (String, NumberStyles, IFormatProvider, Int32) (System) http://msdn.microsoft.com/ja-jp/library/zf50za27.aspx MSDN: NumberStyles 列挙体 (System.Globalization) http://msdn.microsoft.com/ja-jp/library/system.globalization.numberstyles.aspx
お礼
ご回答ありがとうございました。
補足
正数では成功したのですが、負数ではうまくいきませんでした。 もう少し試してみます。 int tempNum = -12345; textBox1.Text = tempNum.ToString("c"); string stTarget; stTarget = textBox1.Text; Console.WriteLine("1stTarget=" + stTarget); stTarget = stTarget.Replace(",", ""); Console.WriteLine("2stTarget=" + stTarget); int tempNum2 = int.Parse(stTarget, System.Globalization.NumberStyles.AllowCurrencySymbol); Console.WriteLine("tempNum2=" + tempNum2);
- himajin100000
- ベストアンサー率54% (1660/3060)
お礼
ご回答ありがとうございました。
補足
”通貨記号”なので不定になるので言語を設定して確実に\になるようにして削除する、ということでしょうか? ”言語を設定する”のがよくわからないのでまだ実現できてませんが、調べてみます。
お礼
言語の設定や負符号に関係なくNumberStyles.Currencyで可能なはず、ということですね? まだうまくいってませんが、使い方を間違っているのと思いますのでいろいろやってみます。 ありがとうございました。