2013-02-12 81 views
0

是否可以進行字符串比較,其中我比較的字符串之一具有通配符,通常僅用於格式化目的。例如VB.Net字符串比較和通配符值

Dim correctFormat as String = "##-##-###-##" 
Dim stringToCheck = someClass.SomeFunctionThatReturnsAStringToCheck 
If FormatOf(CorrectFormat) = FormatOF(StringToCheck) then 
Else 
End if 

我知道了FormatOf語法,但我只是用它來顯示我在問什麼。

回答

2

方法是使用regular expressions - 這就是他們的用途。

這是正則表達式,您已發佈的格式相匹配:

^\d{2}-\d{2}-\d{3}-\d{2}$ 
+0

謝謝Oded,我現在要看看這個。當我弄明白的時候,我會將你的答案標記爲正確的。 – Brandon 2013-02-12 14:15:02

0

如前所述以前的帖子,你應該使用正則表達式用於這一目的 - 他們是該任務的方式更好。 不幸的是,學習它們可能會讓人困惑,尤其是發現bug可能非常煩人。 我真的很喜歡http://www.regular-expressions.info/http://regexpal.com/之前構建和測試正則表達式。

VB.net中使用類似reg.ismatch

+0

非常感謝IsMatch的評論,這也節省了很多時間! – Brandon 2013-02-12 14:33:36

3

無需正則表達式。

您可以簡單地使用Like運營商,它支持?*#作爲通配符,也位字符([...][!...]

所以只需更改您的代碼:

If stringToCheck Like correctFormat Then 

和它會按預期工作。

+0

啊,謝謝你的這些信息。在我看到它之前,我得到了正則表達式。無論如何,再次感謝! – Brandon 2013-02-12 14:34:43

+0

不幸的是,似乎'Like'運算符是VB.Net中鮮爲人知的好東西之一:-) – sloth 2013-02-12 14:38:43

+0

我非常瞭解像運算符,但是我發現它在很多情況下都是缺乏的。所以我更頻繁地使用正則表達式,特別是當需求改變時,我不確定,將來像運營商就足夠了。 – 2013-02-12 14:50:52