【问题标题】:c# - check if string contains character and numberc# - 检查字符串是否包含字符和数字
【发布时间】:2012-06-27 05:15:42
【问题描述】:

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

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

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

【问题讨论】:

  • 你试过什么?由于您已经知道它被称为正则表达式,因此找到答案应该不到一分钟。
  • thisIsaString-A21B something else 好吗?

标签: c# asp.net .net regex


【解决方案1】:
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'

还有其他方法可以实现最后两个 - 我喜欢非捕获组 (?&lt;=),因为顾名思义,它可以保持输出组干净。

【讨论】:

  • +1 还展示了如何提取数字,尽管我猜在这种情况下 OP 只想要“是”或“否”。 ;-)
【解决方案2】:

可以用正则表达式来完成:

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

\d 匹配任何数字。

在线查看:ideone

【讨论】:

  • ...除了\d 将只匹配一个数字,而给出的示例是-A21,所以大概OP 需要两个数字
  • @AndrasZoltan:如果您想提取数字(如您的答案),这是一个相关的问题,但如果您只想测试是否有匹配项,则无关紧要。
  • 如果 s = "C:\\",并且 Regex.IsMatch(s, @"-A\d") 为假
猜你喜欢
  • 2015-02-07
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-20
  • 2011-01-21
  • 1970-01-01
相关资源
最近更新 更多