IntelliJ建议替换()'可以用编译的java.util.regex.Pattern构造替换

时间:2017-12-15 12:25:04

标签: java regex intellij-idea

当我有以下代码时会触发一个特定的IntelliJ IDEA检查:

string1 = string2.replace(string3, string4);

检查说:

  

'替换()'可以用编译的java.util.regex.Pattern构造替换。

然后提供为我重构代码,这导致使用常量文字模式。

我开启此检查主要用于我实际动态创建正则表达式的情况。如果我遵循IntelliJ的建议,它有时可以提高性能。但在String.replace()的情况下,论证不是正则表达式。在这种情况下遵循IntelliJ的建议是否真的不会导致任何性能提升,而它所做的只是会损害可读性?

是否可以将String.replace()关闭,但是为String.replaceAll()String.replaceFirst()保持开启状态?我无法看到这样的选择。

1 个答案:

答案 0 :(得分:4)

String.replace(String, String)的实现 1 只是委托给Pattern.compile(...).matcher(...).replaceAll(...)。因此,我无法想象在用户代码中使用明确的Pattern将会更少更高效的情况(实际上,在很多情况下,它可能最终更多高性能)。可读性当然是一个不同的问题!

我不确定是否可以配置IntelliJ检查,但您可以suppress it查看单个语句,方法或类。

<子> 1。至少在Oracle的JDK8。