如何使用 +5 无效但 5 有效的规则解析整数?
How do I parse an integer, using the rule that +5 is not valid but 5 is?
我的程序要求用户在文本框中输入 1 - 10 之间的数字。当我输入数字时,我将其转换为 int
,方法是:
if (!int.TryParse(inputBox.Text, out input))
我使用了 !
,因为如果不能将数字 TryParse
转换为 int,则会向用户抛出错误。
这有效,直到我输入以 +
开头的数字,例如 +5
或 +1
。它没有捕捉到 int
前面有一个 +
的事实。如果我输入多个 +
,它会像应该的那样抛出一个错误。
有人会如何制作代码的防错行来检查此类输入?
您可以在运行时从 textBox 中删除 +
或检查 + 字符,如下面的代码所示
if (inputBox.Text.Contains("+"))
{
// throw or show message
return;
}
if (!int.TryParse(inputBox.Text, out input))
{
}
如果你想在按下时显示弹出窗口,你可以在文本框TextChangeEvent中检查以上条件,
或者使用按键事件限制输入。
我想你想允许 1-10 没有正号 (+)。
int number;
var input = numberTextBox.Text;
if (!input.StartsWith("+") && int.TryParse(input, out number))
{
//valid input, check if it's between 1-10
}
但是我觉得这个要求真的很奇怪。 "+10" 被认为与 "10" 相同,它是一个有效的输入。
有一个 Int32.TryParse
的重载,它接受一个 NumberStyles
值和一个 IFormatProvider
。 - https://msdn.microsoft.com/en-us/library/zf50za27(v=vs.110).aspx
Int32.TryParse
使用的默认值是 NumberStyles.Integer
,它允许前导和尾随空格以及前导符号。
int.TryParse("+5", NumberStyles.None, NumberFormatInfo.InvariantInfo, out x)
,例如,returns false - 然而,对于 -5,它也是 returns false,因为包含前导符号的选项不会区分 +和 -。这是一个你可能也不应该的提示,“+5”是一个整数,就像“5”和“-5”一样。
我的程序要求用户在文本框中输入 1 - 10 之间的数字。当我输入数字时,我将其转换为 int
,方法是:
if (!int.TryParse(inputBox.Text, out input))
我使用了 !
,因为如果不能将数字 TryParse
转换为 int,则会向用户抛出错误。
这有效,直到我输入以 +
开头的数字,例如 +5
或 +1
。它没有捕捉到 int
前面有一个 +
的事实。如果我输入多个 +
,它会像应该的那样抛出一个错误。
有人会如何制作代码的防错行来检查此类输入?
您可以在运行时从 textBox 中删除 +
或检查 + 字符,如下面的代码所示
if (inputBox.Text.Contains("+"))
{
// throw or show message
return;
}
if (!int.TryParse(inputBox.Text, out input))
{
}
如果你想在按下时显示弹出窗口,你可以在文本框TextChangeEvent中检查以上条件, 或者使用按键事件限制输入。
我想你想允许 1-10 没有正号 (+)。
int number;
var input = numberTextBox.Text;
if (!input.StartsWith("+") && int.TryParse(input, out number))
{
//valid input, check if it's between 1-10
}
但是我觉得这个要求真的很奇怪。 "+10" 被认为与 "10" 相同,它是一个有效的输入。
有一个 Int32.TryParse
的重载,它接受一个 NumberStyles
值和一个 IFormatProvider
。 - https://msdn.microsoft.com/en-us/library/zf50za27(v=vs.110).aspx
Int32.TryParse
使用的默认值是 NumberStyles.Integer
,它允许前导和尾随空格以及前导符号。
int.TryParse("+5", NumberStyles.None, NumberFormatInfo.InvariantInfo, out x)
,例如,returns false - 然而,对于 -5,它也是 returns false,因为包含前导符号的选项不会区分 +和 -。这是一个你可能也不应该的提示,“+5”是一个整数,就像“5”和“-5”一样。