重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

C#で、テキストボックスに金額を記入し、のちに取り出して数値として使いたいのですが、ToString("c")でフォーマットして記入した場合は通貨記号が取れませんでした。
なぜでしょうか?
何か良い方法がありますでしょうか?
よろしくお願いいたします。

//ToString("c")を使わないで記入した場合
textBox1.Text = "-\\12345";
string stTarget;
stTarget = textBox1.Text;
Console.WriteLine("1stTarget=" + stTarget);
stTarget = stTarget.Replace(",", "");
Console.WriteLine("2stTarget=" + stTarget);
stTarget = stTarget.Replace("\\", "");
Console.WriteLine("3stTarget=" + stTarget);

//出力結果
//1stTarget=-\12,345
//2stTarget=-\12345
//3stTarget=-12345

//ToString("c")を使って記入した場合
int tempNum = -12345;
textBox1.Text = tempNum.ToString("c");
stTarget = textBox1.Text;
Console.WriteLine("1stTarget=" + stTarget);
stTarget = stTarget.Replace(",", "");
Console.WriteLine("2stTarget=" + stTarget);
stTarget = stTarget.Replace("\\", "");
Console.WriteLine("3stTarget=" + stTarget);

//出力結果
//1stTarget=-\12,345
//2stTarget=-\12345
//3stTarget=-\12345

A 回答 (3件)

先の回答にも書きましたが,NumberStyles.Currencyを使ってください。


これはMSDNにもあるとおり,AllowCurrencySymbolやAllowLeadingSign,AllowThousandsを含みます。
AllowThousandsを含むため,","を削除する処理も不要です。
    • good
    • 0
この回答へのお礼

言語の設定や負符号に関係なくNumberStyles.Currencyで可能なはず、ということですね?
まだうまくいってませんが、使い方を間違っているのと思いますのでいろいろやってみます。
ありがとうございました。

お礼日時:2011/06/15 18:29

.ToString("c")の逆操作がしたい,ということでしょうか。


それであれば,Int32.ParseやInt32.TryParseにNumberStyles.Currencyを与えれば可能です。

MSDN: Int32.Parse メソッド (String, NumberStyles) (System)
http://msdn.microsoft.com/ja-jp/library/c09yxbyt …
MSDN: Int32.Parse メソッド (String, NumberStyles, IFormatProvider) (System)
http://msdn.microsoft.com/ja-jp/library/9yaffedz …
MSDN: Int32.TryParse メソッド (String, NumberStyles, IFormatProvider, Int32) (System)
http://msdn.microsoft.com/ja-jp/library/zf50za27 …
MSDN: NumberStyles 列挙体 (System.Globalization)
http://msdn.microsoft.com/ja-jp/library/system.g …

この回答への補足

正数では成功したのですが、負数ではうまくいきませんでした。
もう少し試してみます。
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);

補足日時:2011/06/14 09:16
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2011/06/14 09:16

この回答への補足

”通貨記号”なので不定になるので言語を設定して確実に\になるようにして削除する、ということでしょうか?
”言語を設定する”のがよくわからないのでまだ実現できてませんが、調べてみます。

補足日時:2011/06/14 08:52
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2011/06/14 08:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!