用于简单字符串的预编译模式,还是仅用于正则表达式?

时间:2018-06-22 17:24:59

标签: java string

用例:

for( String phrase : largeDictionary )
     phrase.split(",");

我了解在针对regex拆分或匹配String时为什么要编译和重用模式。我想知道简单字符串文字是否具有相同的好处,或者是否有优化的代码路径可以避免正则表达式,而在不必要的情况下,如我上面的逗号所示,完全避免了正则表达式。如果我经常这样做,是否仍应创建并重复使用模式?

1 个答案:

答案 0 :(得分:1)

aString.split(“,”)-非常好,对于这种情况,您不需要模式。 http://www.docjar.com/html/api/java/lang/String.java.html 当模式仅包含一个符号(也称为定界符)时,java使用比使用正则表达式更简单的方法

   public String[] split(String regex, int limit) {
       /* fastpath if the regex is a
          (1)one-char String and this character is not one of the
             RegEx's meta characters ".$|()[{^?*+\\", or
          (2)two-char String and the first char is the backslash and
             the second is not the ascii digit or ascii letter.
       */