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
}

或者,如果它是十进制数:

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)

我测试过的还有几个:

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

您可以简单地引用 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

您可以使用布尔值来判断字符串是否包含数字字符。

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()方法来确定文本是整数还是字符串。如果是,该方法将返回 true,否则将返回 false。代码如下:

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

如果转换成功,其中 Num 将包含您的整数值

于 2012-04-25T14:43:19.853 回答
0

可以在以下位置找到一个很好的方法示例:http: //msdn.microsoft.com/en-us/library/f02979c7.aspx

甚至有一些代码在做几乎完全符合您要求的事情。如果您期望整数值,则可以使用 Int32.TryParse(string) 。如果您预计双打,请使用 Double.TryParse(string)。

于 2012-04-25T14:47:32.497 回答