如何在字符串

时间:2015-12-29 00:15:02

标签: regex vb.net

寻找一种方法来查找任何看似时间值的内容,例如给定字符串中任何位置的1:00或2:30。我宁愿不扫描整个字符串

If String.Mid(myString,i,4) Like "#:##" Then ...

如果有更好的方法来完成同样的事情。

偶然的假阳性是可以的,所以如果我将0:99标识为时间值,那么就没有坏处,并找到时间值2:00的{​​{1}}部分也很好 - 指向角色12:00而不是角色2会导致没有问题。对于这个应用程序,不需要在冒号之外找到其他分隔符。

RegEx是搜索此类模式的最佳方式,还是更有效的另一种方法?

谢谢!

1 个答案:

答案 0 :(得分:2)

RegEx可能是您所描述的最直接的解决方案。

Dim stringToMatch = "The time is 1:00 or maybe 13:01 or possibly 27:03 or 4:99 or part of 103:17, but not 22:7"
Dim matcher = New Regex("[0-9]{1,2}:[0-9]{2}")
Dim matches = matcher.Matches(stringToMatch)
For Each match As Match In matches
    Console.WriteLine("Found match {0} at position {1}", match.Value, match.Index)
Next match

从那里,可以很容易地改变RegEx模式以更好地满足您的需求,或者检查匹配对象以确定匹配的内容,在原始字符串中的索引处。