7

文字列に数字のみが含まれているかどうかを確認する必要があります。C#でこれを達成するにはどうすればよいですか?

string s = "123"    → valid 
string s = "123.67" → valid 
string s = "123F"   → invalid 

IsNumeric のような関数はありますか?

4

9 に答える 9

2

これは、文字列の長さに関係なく機能するはずです。

string s = "12345";
bool iAllNumbers = s.ToCharArray ().All (ch => Char.IsDigit (ch) || ch == '.');
于 2010-01-19T09:46:33.103 に答える
2

正規表現を使用するのが最も簡単な方法です (ただし、最速ではありません)。

bool isNumeric = Regex.IsMatch(s,@"^(\+|-)?\d+(\.\d+)?$");
于 2010-01-19T09:46:58.140 に答える
1

上記のように、 double.tryParse を使用できます

(何らかの理由で) それが気に入らない場合は、独自の拡張メソッドを作成できます。

    public static class ExtensionMethods
    {
        public static bool isNumeric (this string str)
        {
            for (int i = 0; i < str.Length; i++ )
            {
                if ((str[i] == '.') || (str[i] == ',')) continue;    //Decide what is valid, decimal point or decimal coma
                if ((str[i] < '0') || (str[i] > '9')) return false;
            }

            return true;
        }
    }

使用法:

string mystring = "123456abcd123";

if (mystring.isNumeric()) MessageBox.Show("The input string is a number.");
else MessageBox.Show("The input string is not a number.");

入力:

123456abcd123

123.6

出力:

間違い

真実

于 2010-01-19T09:54:22.540 に答える
0

文字列をパラメーターとして受け取っている場合、より柔軟な方法は、他の投稿で説明されているように正規表現を使用することです。ユーザーからの入力を取得する場合は、KeyDown イベントをフックして、数字以外のすべてのキーを無視することができます。このようにして、数字だけを持っていることを確認できます。

于 2010-01-19T09:50:10.537 に答える