我是java新手,我正在努力学习优化代码以使其生产就绪。我在下面有以下代码。我想知道如何优化它。我想通过使用一小段可能,这将是一个很好的学习方法。
有些观点:
1.该功能将运行多次,需要快速。
2.输入不受约束,因为它可能来自用户或文件。有没有办法解决这个问题,所以不会抛出异常?我正在考虑使用正则表达式
3.还有什么我需要做的才能让生产准备好吗?例如单元测试。如果是这样,最好的方法是什么?
我假设要搜索的字符串不是很长。
5.当我说优化时,我的意思是做一些事情,比如用更快的东西替换“+”运算符,它会影响内存和性能等。
public String strReplave(String originalStr, String oldStr, String newStr) {
int start = 0;
while ((start = originalStr.indexOf(oldStr, start)) > 0) {
originalStr= originalStr.substring(0,start) + newStr+ originalStr.substring(start + oldStr.length());
start += newStr.length();
}
return originalStr;
}
感谢您的帮助,如果您需要我澄清任何事情,请告诉我。
答案 0 :(得分:1)
没有什么能超越内置方法input.replace(old,new)
,因此没有理由真正尝试自己重新实现它。
答案 1 :(得分:0)
两点:
答案 2 :(得分:0)
这就是我使用的:
public static String replaceString(String cadena, String word, String newWord) {
Pattern pat = Pattern.compile(word);
Matcher mat = pat.matcher(cadena);
return mat.replaceAll(newWord);
}
你真的不需要知道正则表达式使用它,因为它会匹配文字字符串,例如"a literal string"
我不知道它是否是你要求的但是对我来说效果很好。
答案 3 :(得分:0)
除了使用内置函数外,还有我的两分钱。使它显而易见代码的作用。但包括程序可能失败的所有可能条件。
使用try{} catch()
{异常处理}
在尝试优化代码之前测量代码以及瓶颈的位置。不要猜。
答案 4 :(得分:0)
public static String replace(String originalStr, String oldStr, String newStr) {
int p = originalStr.indexOf(oldStr);
if (p == -1) {
return originalStr;
} else {
StringBuilder result = new StringBuilder();
result.append(originalStr, 0, p);
result.append(newStr);
int q = p + oldStr.length();
while ((p = originalStr.indexOf(oldStr, q)) != -1) {
result.append(originalStr, q, p);
result.append(newStr);
q = p + oldStr.length();
}
result.append(originalStr, q, originalStr.length());
return result.toString();
}
}
StringBuilder
连接字符串。