我有一个脚本(Java String),其中包含许多SQL和SQL运算符,如<>(不等于),++(增量运算符),:=(赋值运算符)但默认情况下都是在它们之间包含单个或多个空格用于示例<>将< >,类似++可能像+ +,它们之间有多个空格。
我写了一个简单的RegEx来删除下面提到的空格。对于小脚本,没有问题,但对于较大的脚本,它需要很多时间,有时需要20-30秒。
你能看到这个程序有什么问题并建议我更好的东西吗?
p = Pattern.compile("(: +=|! +=|- +-|< +>|> +=|< +=|\\+ +=|\\'|\\/ +\\*|\\* +\\/|\\| +\\||\\< +\\<|\\> +\\>)");
m = p.matcher(script);
while (m.find()) {
script = script.replace(m.group(), m.group().replaceAll(" +", ""));
}
请建议我如何减少时间。
由于
答案 0 :(得分:1)
您是否尝试过使用String.replace(CharSequence, CharSequence)
?
答案 1 :(得分:1)
我担心与工会的长期正面关系在匹配器上有点难。为什么不是这样一个更简单的解决方案:
str = str.replace(":( +)=", ":=");
str = str.replace("!( +)=", "!=");
str = str.replace("-( +)-", "--");
//... etc
它会更清晰,更快。