Leo*_*oli 7 java regex performance if-statement
我有两种可能性,制作正则表达式或制作if比较.
如果比较
if (!(modoImpressao.equals("IMPRESSORA") ||
modoImpressao.equals("PDF") || modoImpressao.equals("AMBOS")))
Run Code Online (Sandbox Code Playgroud)
正则表达式匹配
if (!Pattern.compile("(IMPRESSORA)|(PDF)|(AMBOS)",Pattern.DOTALL).matcher(modoImpressao).find()){
throw new EspdNeverStopParametroInvalidoException(TspdConstMessages.IMPRIMIR_PARAMETRO_MODOIMPRESSAO_INVALIDO,"TspdImprimirNFCe");
}
Run Code Online (Sandbox Code Playgroud)
哪一个更快?
ars*_*jii 14
第一个片段几乎肯定会更快,因为它不必解析正则表达式并执行匹配.另一种选择是:
if (Arrays.asList("IMPRESSORA", "PDF", "AMBOS").contains(modoImpressao)
Run Code Online (Sandbox Code Playgroud)
这应该与你的第一个片段的速度不同,但可以说更具可读性和简洁性.
正则表达式很棒,但只在需要时才使用它们.这种情况绝对不能保证使用正则表达式; 你所做的只是与文字字符串进行比较.
Jamie Zawinski有一句古老的说法是这样的:
有些人在面对问题时会想"我知道,我会使用正则表达式".现在他们有两个问题.
| 归档时间: |
|
| 查看次数: |
3494 次 |
| 最近记录: |