4

文字列に数値が含まれているかどうかを確認しようとしています。ラベルに戻らない場合は、メイン ウィンドウを表示したいと思います。これはどのように行うことができますか?

If (mystring = a numeric value)
            //do this:
            var newWindow = new MainWindow();
            newWindow.Show();
If (mystring = non numeric)
            //display mystring in a label
            label1.Text = mystring;

else return error to message box
4

7 に答える 7

6

TryParseを使用します。

double val;
if (double.TryParse(mystring, out val)) {
    ..
} else { 
    ..
}

これは、数値に直接変換される文字列に対して機能します。$や、などについて心配する必要がある場合は、最初にそれをクリーンアップするためにもう少し作業を行う必要があります。

于 2012-04-25T14:38:37.300 に答える
5
Int32 intValue;
if (Int32.TryParse(mystring, out intValue)){
  // mystring is an integer
}

または、10進数の場合:

Double dblValue;
if (Double.TryParse(mystring, out dblValue)){
  // mystring has a decimal number
}

いくつかの例、ところで、ここで見つけることができます。

Testing foo:
Testing 123:
    It's an integer! (123)
    It's a decimal! (123.00)
Testing 1.23:
    It's a decimal! (1.23)
Testing $1.23:
    It's a decimal! (1.23)
Testing 1,234:
    It's a decimal! (1234.00)
Testing 1,234.56:
    It's a decimal! (1234.56)

私がテストしたもう2つの:

Testing $ 1,234:                      // Note that the space makes it fail
Testing $1,234:
    It's a decimal! (1234.00)
Testing $1,234.56:
    It's a decimal! (1234.56)
Testing -1,234:
    It's a decimal! (-1234.00)
Testing -123:
    It's an integer! (-123)
    It's a decimal! (-123.00)
Testing $-1,234:                     // negative currency also fails
Testing $-1,234.56:
于 2012-04-25T14:39:23.237 に答える
2
double value;
if (double.tryParse(mystring, out value))
{
        var newWindow = new MainWindow();
        newWindow.Show();
}
else
{
    label1.Text = mystring;
}
于 2012-04-25T14:40:04.807 に答える
0

文字列に数値文字が含まれているかどうかを判断するには、ブール値を使用できます。

public bool GetNumberFromStr(string str)
    {
        string ss = "";
        foreach (char s in str)
        {
            int a = 0;
            if (int.TryParse(Convert.ToString(s), out a))
                ss += a;
        }
        if ss.Length >0
           return true;
        else
           return false;
    } 
于 2012-04-25T14:42:25.230 に答える
0

ラベルのキャプションを文字列に取り込んで、 Int.TryParse()メソッドを使用してテキストが整数か文字列かを判断してみてください。yesの場合、メソッドはtrueを返し、そうでない場合はfalseを返します。コードは次のようになります:

if (Int.TryParse(<string> , out Num) == True)
{
   // is numeric
}
else
{
   //is string
}   

ここで、変換が成功した場合、Numには整数値が含まれます

于 2012-04-25T14:43:19.853 に答える
0

Microsoft.VisualBasic.dll を参照するだけで、次の操作を実行できます。

if (Microsoft.VisualBasic.Information.IsNumeric(mystring))
{
    var newWindow = new MainWindow();
    newWindow.Show();
}
else
{
    label1.Text = mystring;
}

失敗した変換ごとに例外をスローしないため、VB の方が実際にはパフォーマンスが向上します。

参照: C# の IsNumeric の探索

于 2012-04-25T14:39:48.083 に答える
0

これを行うメソッドの良い例は、http: //msdn.microsoft.com/en-us/library/f02979c7.aspxにあります。

必要なことをほぼ正確に実行するコードもあります。整数値が必要な場合は、 Int32.TryParse(string) を使用できます。double が予想される場合は、Double.TryParse(string) を使用します。

于 2012-04-25T14:47:32.497 に答える