Dot-Net

Regex.IsMatch 與 string.Contains

  • June 3, 2010

這兩個等效表達式的速度/記憶體使用是否有任何差異:

Regex.IsMatch(Message, "1000")

VS

Message.Contains("1000")

任何情況下一個比另一個更好?

這個問題的上下文如下:我正在對包含 Regex 表達式的遺留程式碼進行一些更改,以查找一個字元串是否包含在另一個字元串中。作為遺留程式碼,我沒有對其進行任何更改,並且在程式碼審查中有人建議 Regex.IsMatch 應該由 string.Contains 替換。所以我想知道這種改變是否值得。

對於簡單的情況String.Contains,會給您更好的性能,但String.Contains不允許您進行複雜的模式匹配。用於String.Contains非模式匹配場景(如您的範例中的場景),並將正則表達式用於需要進行更複雜模式匹配的場景。

正則表達式具有與它相關的一定量的成本(表達式解析、編譯、執行等),而像簡單的方法這樣的簡單方法String.Contains卻沒有,這就是為什麼String.Contains在像您這樣的範例中會勝過正則表達式的原因。

引用自:https://stackoverflow.com/questions/2962670