2015-12-29 54 views
2

尋找一種方法來查找任何看起來像時間值的內容,例如給定字符串中的任意位置的1:00或2:30。我寧願不掃描整個字符串如何在字符串中查找時間值(類似於#:##)

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

如果有更好的方法來完成相同的事情。

一個偶爾的假陽性是好的,所以如果我得到認定爲一個時間值0:99,沒有,完全沒有副作用,並找到時間價值12:002:00部分也沒關係 - 在字符2而不是指向字符1的原因沒有問題。對於這個應用程序,除了冒號之外還需要找到其他分隔符。

RegEx是搜索這種模式的最佳方式,還是另一種更高效的方法?

謝謝!

回答

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 

從那裏,它是簡單的改變正則表達式模式,以更好地滿足您的需求,或者檢查匹配對象,以確定什麼是匹配的,在原始字符串什麼指標。

+0

這看起來很棒 - 非常感謝! –