寻找一种方法来查找任何看似时间值的内容,例如给定字符串中任何位置的1:00或2:30。我宁愿不扫描整个字符串
If String.Mid(myString,i,4) Like "#:##" Then ...
如果有更好的方法来完成同样的事情。
偶然的假阳性是可以的,所以如果我将0:99
标识为时间值,那么就没有坏处,并找到时间值2:00
的{{1}}部分也很好 - 指向角色12:00
而不是角色2
会导致没有问题。对于这个应用程序,不需要在冒号之外找到其他分隔符。
RegEx是搜索此类模式的最佳方式,还是更有效的另一种方法?
谢谢!
答案 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模式以更好地满足您的需求,或者检查匹配对象以确定匹配的内容,在原始字符串中的索引处。