检查字符串中的字符,而不会挂在空格上



目前,在我的程序中,我使用以下Regex方法和if语句检查我的字符串以查看它们是否不是整数值:

if(Regex.IsMatch(myString, @"^d+$") == false) {}

但是,我需要允许诸如"45 23 12"之类的值。这些值涉及空格,我相信这些空格被Regex算作字符,因为每当我尝试像上一个这样的示例时,我的代码都会返回 false。

如何在允许使用空格的同时检查非整数的值?

此问题使用Regex.Matches(myString,@"[a-zA-Z]").Count来检查字符串中"a-z"中出现的所有字符,这不涉及" "。但是,当我在if语句中使用它时,我注意到它是 Int 类型,无法与带有 ==false 进行比较。

if(! Regex.IsMatch(myString, @"^s*d(d|s)*$")) { ... }

我会使用正则表达式

^d+(sd+)*$

解释:

^          beginning of line.
d+        one or more digits.
(sd+)*   zero, one or more repetitions of space + one or more digits.
$          end of line.
if (!Regex.IsMatch(myString, @"^d+(sd+)*$")) {
    ...
}

并请写

!<boolean expression>而不是<boolean expression> = false.

<Boolean expression>而不是<Boolean expression> = true.

你不写1 * x,而只是x.

很多人认为if语句需要比较。他们没有。他们需要的是一个布尔表达式,即产生 truefalse 值的表达式。 Regex.IsMatch(...)返回一个bool值,这就是我们所需要的。

尝试以下正则表达式(如果我正确理解您的问题。

^(?:d|s)+$

它似乎可以做你想做的事,这是对它的测试。

相关内容

  • 没有找到相关文章

最新更新