Java 使用if条件检查和replaceAll进行代码优化
我有一个字符串,其中我必须检查一些if条件,并执行一些替换操作,如下所示Java 使用if条件检查和replaceAll进行代码优化,java,string,if-statement,replace,Java,String,If Statement,Replace,我有一个字符串,其中我必须检查一些if条件,并执行一些替换操作,如下所示 for(int i =0; i<10;i++){ if(name[i].contains("sometext")){ name[i] = name[i].replaceAll("someregexpattern","replacementtexthere"); } } for(int i =0; i<10;i++){ name[i] = name[i].replac
for(int i =0; i<10;i++){
if(name[i].contains("sometext")){
name[i] = name[i].replaceAll("someregexpattern","replacementtexthere");
}
}
for(int i =0; i<10;i++){
name[i] = name[i].replaceAll("someregexpattern","replacementtexthere");
}
for(int i=0;i仅当sometext
与someregexpatern
相同时,此选项才有效。否则,if
条件确实重要
假设字符串中确实存在SomeRegExpatern
,但是如果条件求值为false
,则不应进行替换。但是如果删除if
语句,则会发生替换,这与此不完全相同
例如:-帮助您更好地理解
String testCondition = "dontReplace";
String myString = "Hi, I'm SO";
String regex = "SO";
String replacement = "Not SO";
if(myString.contains(testCondition)){
myString = myString.replaceAll(regex, replacement); // stays "Hi, I'm SO"
}
myString = myString.replaceAll(regex, replacement); // Becomes "Hi, I'm Not SO"
如您所见,要求不应发生字符串
替换,因为条件是dontReplace
,但由于if
已被删除,因此即使不应该发生替换,也会发生替换。如果“if”本身不会影响性能。
虽然现在函数调用非常便宜,但String.contains()将再进行4-5次函数调用
但是,前一种变体可读性更好,更不容易出现错误。“性能方面的任何意义”也取决于整个过程在软件中执行的频率
运行探查器(通过或其他方式)将向您显示执行时间的很大一部分是否花在String#replaceAll()
上。如果不是,您将无法通过优化它获得显著的改进。这听起来很明显,但却常常被遗忘
如果优化不会带来显著的收益,那么选择可读性更高的代码变体几乎总是会更好。这可能取决于if条件为真的频率(假设.contains
比.replaceAll
便宜).methinks.replaceall应该是replaceall。您的代码编译?@Achintya Jha-这是一个拼写错误。更正。谢谢:)谢谢!这对我帮助很大:)