C# - 检查字符串是否包含字符和数字

4

如何检查一个字符串是否包含以下字符:“-A”后跟数字?

例如:thisIsaString-A21 = 是,包含“-A”后跟数字

例如:thisIsaNotherString-AB21 = 否,不包含“-A”后跟数字


4
你尝试过什么?既然你已经知道它叫做正则表达式,找到答案不应该超过一分钟。 - gdoron
1
thisIsaString-A21B something else 怎么样?可以吗? - Ωmega
2个回答

15

可以使用正则表达式来实现:

if (Regex.IsMatch(s, @"-A\d")) { ... }

\d 匹配任何数字。

可在此网址在线查看它的使用效果:ideone


1
除了\d只匹配单个数字外,而给出的示例是-A21,因此假定问题提出者需要匹配两个数字。 - Andras Zoltan
1
@AndrasZoltan:如果你想提取数字(如你的答案中所述),这是一个相关的关注点,但如果您只想测试是否有匹配项,则不相关。 - Mark Byers
如果s = "C:\", 并且Regex.IsMatch(s, @"-A\d")返回false - Ponmalar

4
if(Regex.IsMatch("thisIsaString-A21", "-A\\d+"))
{
  //code to execute
}

如果你确实想要提取-A[num]位,可以这样做:

var m = Regex.Match("thisIsaString-A21", "-A\\d+"));
if(m.Success)
{
  Console.WriteLine(m.Groups[0].Value);
  //prints '-A21'
}

还有其他事情可以做 - 比如,如果您需要单独提取A [num]位或只提取数字:

var m = Regex.Match("thisIsaString-A21", "(?<=-A)\\d+");
//now m.Groups[0].Value contains just '21'

或者按照我的第一个建议,如果您想要 'A21':

var m = Regex.Match("thisIsaString-A21", "(?<=-)A\\d+");
//now m.Groups[0].Value contains 'A21'

还有其他方法可以实现这两个功能 - 我喜欢非捕获组(?<=),因为它可以保持输出组的清洁,正如其名称所示。


+1 还展示了如何提取数字,尽管我猜测 OP 在这种情况下只想要“是”或“否”。;-) - Mark Byers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接