『Visual C#実践講座』 1章 その9 入力文字列を整数に変換する(通貨記号、区切り文字に対応)
using System; using System.Globalization; class Program { static void Main(string[] args) { int? n = GetInt(); if (n == null) { Console.WriteLine("値を取得できませんでした"); } else { Console.WriteLine(n); } } // カンマ区切り、通貨記号などにも対応 static int? GetInt() { Console.Write("整数を入力してください: "); string s = Console.ReadLine(); int n; // 4つ引数取るタイプのTryParse。NumberStyles, NumberFormatInfoクラスはSystem.Globalizationにある。 if (int.TryParse(s, NumberStyles.Any, NumberFormatInfo.CurrentInfo, out n)) { return n; } else { return null; } } }
整数を入力してください: 12,345 12345 整数を入力してください: 123,45 12345 整数を入力してください: 1,,2,,3 123 整数を入力してください: \123 123 整数を入力してください: %123 値を取得できませんでした 整数を入力してください: $123 値を取得できませんでした 整数を入力してください: \\123 値を取得できませんでした 整数を入力してください: 133 値を取得できませんでした
NumberStyles, Int32.Parse, NumberFormatInfo
NumberStyles 列挙体 (System.Globalization)
http://msdn.microsoft.com/ja-jp/library/system.globalization.numberstyles(VS.80).aspx
Number, None, Integer, HexNumber, Float, Anyなど
通貨記号OK | AllowCurrencySymbol |
小数点OK | AllowDecimalPoint |
指数表記OK | AllowExponent |
16進数表記OK | AllowHexSpecifier |
プラスマイナスOK | AllowLeadingSign |
先頭の空白OK | AllowLeadingWhite |
後続する空白OK | AllowTrailingWhite |
区切りのコンマOK | AllowThousands |
Int32.Parse メソッド (String, NumberStyles, IFormatProvider) (System)
http://msdn.microsoft.com/ja-jp/library/9yaffedz.aspx
public static int Parse( string s, NumberStyles style, IFormatProvider provider )
Int32 メンバ (System)
http://msdn.microsoft.com/ja-jp/library/system.int32_members.aspx
CompareTo, Equals, Parse, TryParse, ToString,
MaxValue, MinValueなど。
NumberFormatInfo クラス (System.Globalization)
http://msdn.microsoft.com/ja-jp/library/system.globalization.numberformatinfo(VS.80).aspx
このクラスは、通貨、桁区切り記号、その他の数値記号などの情報を格納します。
現在のスレッドのカルチャに対して NumberFormatInfo を作成するには、CurrentInfo プロパティを使用
NumberFormatInfo メンバ (System.Globalization)
http://msdn.microsoft.com/ja-jp/library/system.globalization.numberformatinfo_members(VS.80).aspx
参考
方法 : 16 進文字列と数値型の間で変換を行う (C# プログラミング ガイド)
http://msdn.microsoft.com/ja-jp/library/bb311038.aspx