问题
To search for s in S (size(S) >= size(s) and return a true/false value), it's better for performance to use StringUtils.contains() of Apache or use Boyer-Moore algorithm implemented and tested well by someone I found?
Thanks
回答1:
The last time I looked into the Java regex matching code while debugging, the Java 7 regex engine used the Boyer-Moore algorithm for sequences of literal text matches. So the easiest way to find a String
using Boyer-Moore is to prepare using p=Pattern.compile(searchString, Pattern.LITERAL)
and search using p.matcher(toSearchOn).find()
. No third party libraries and no handcrafted work needed. And I believe the JRE classes are tested well…
回答2:
Apache Lang uses the Java API's Region Matching for their contains implementation. Hard to say which is faster on the surface. Sounds like an opportunity to build a simple test case and run it both ways and see.
来源:https://stackoverflow.com/questions/20005690/stringutils-contains-of-apache-and-boyer-moore-string-search-algorithm