-1

なのでTryParseメソッドを使いたいのですが、今のところintegerかdouble値しか使えません。ただし、値が数値であるかどうかを確認し、そうでない場合 (たとえば文字列の場合) に false の値を取得したいと考えています。IsDigit() のようなものは Java です。

static void Main()
    {
        int number;
        Console.Write("Enter a number: ");
        bool result = Int32.TryParse(Console.ReadLine(), out number); 
        if (result)
        {
            Console.WriteLine("The input number is an integer.");
        }

        else
        {
            Console.WriteLine("The input number is not an integer.");
        }
    }

だから私はそれをしたいのですが、整数値をチェックする代わりに、数値をチェックしたいと思います。ですから、私が使用できる方法を誰かが教えてくれれば、とてもうれしいです。前もって感謝します!

4

6 に答える 6

2

decimal または double 型の TryParse は、組み込みメソッドの制限です。それ以上が必要な場合は、文字列を自分で解析する必要があります。次のような正規表現を使用すると、非常に簡単に実行できます。

^-?[0-9]+\.?[0-9]*([Ee][+-]?[0-9]+)?$
于 2013-11-07T07:29:31.017 に答える
2

使用double:

double number;
bool result = double.TryParse(Console.ReadLine(), out number); 

これにより、実数が解析されます。

于 2013-11-07T07:25:04.883 に答える
1

1文字の場合はChar.IsDigit(). その場合Console.ReadKey()、行全体を読む代わりに見たいと思うかもしれません。ちなみに、他の文化のChar.IsDigit()数字にもマッチします。

複数のキャラクターの場合は、何を受け入れたいかを考える必要があります。小数、指数、負の数、または単なる複数桁の文字?

于 2013-11-07T07:24:43.657 に答える
1
bool result = double.TryParse(mystring, out num);

double.TryParse整数でも機能します。

于 2013-11-07T07:25:52.567 に答える
0
static bool enteredNumber()
{
    int intValue;
    double doubleValue;
    Console.Write("Enter a number: ");
    string input = Console.ReadLine();
    return Int32.TryParse(input, out intValue) ? true : double.TryParse(input, out doubleValue);
}
于 2013-11-07T07:27:26.723 に答える
0

正規表現を試すことができます

var regex = new Regex(@"^-*[0-9\.]+$");
var m = regex.Match(text);
if (m.Sucess)
    {
        Console.WriteLine("The input number is an integer.");
    }

    else
    {
        Console.WriteLine("The input number is not an integer.");
    }

セパレータを正規表現に含めることで、セパレータを許可することもできます。

于 2013-11-07T07:25:33.297 に答える