1

好的,所以我正在构建一个 WPF 格式的程序。如您所知,wpf 的输入通常是string,要先将它们转换为double我需要验证这些字符串是否合适,然后继续并转换它们。问题出在验证中,我已经完成了验证中检查string.IsNullOrEmpty的部分,但我无法做的是验证答案是否完全不可转换......让我举个例子,因为有些字符串不完全是数字的仍然应该被接受,例如:

“sadasdaasd” - 不被接受(显然)

“8945a4554” - 不接受(中间有一个“a”)

“3519” - 接受

“12.55” - 接受

“-3/4” - 接受,该值应转换为 (-3) 除以 (4) 的两倍。所以 '/' 被接受,它将字符串拆分为 2,然后将其转换为双倍作为第一部分/第二部分。

我一整天都在尝试进行此验证,但仍未成功,我尝试在网上搜索一些输入验证,有人说我需要使用double.TryParse(string, out double)但此功能不适用于我想要的'/'拆分。所以请帮帮我!!!

4

1 回答 1

1

我将首先通过正则表达式解析您的字符串(q:“-3 * 4”是否可以接受为-3乘以4?)。基本上,您正在寻找类似这样的正则表达式的匹配项(这适用于-3/4,您需要进一步测试并修改是否允许乘法): -?\d+[/]\d+

如果您找到匹配项,请解析出您的字符串,string.Split('/')这将为您提供一个字符串数组。TryParse 中的每一个并进行数学运算。

如果不匹配,请使用 TryParse(如前所述)。这将成功(在您的示例中为 3519、12.55)或失败(在您的示例中为 sadasdaasd、8945a4554)。

注意:您也可以使用 string.Contains('/'),​​但是您必须检查它是否包含多个斜杠(除非允许这样的事情 - 在这种情况下,您需要重新访问该正则表达式) .

于 2013-10-28T20:59:39.400 回答