[英]Java string replace
我是Java的新手,我正在嘗試學習優化代碼以使其准備就緒。 我下面有以下代碼。 我想知道如何優化它。我認為通過使用一小段可能的方法,這將是學習的好方法。
一些要點:
1.該功能將運行很多次,因此需要快速。
2.輸入不受限制,因為它可能來自用戶或文件。 有沒有辦法解決這個問題,所以不會拋出異常? 我當時正在考慮使用正則表達式。
3.還有什么我需要做的才能使它投入生產嗎? 例如單元測試。 如果是這樣,最好的方法是什么?
4.我假設要搜索的字符串不是很長。
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;
}
感謝您的幫助,如果您需要我澄清任何事情,請告訴我。
沒有什么能擊敗內置方法input.replace(old,new)
,因此沒有理由真正嘗試自己重新實現它。
兩點:
這是我用的:
public static String replaceString(String cadena, String word, String newWord) {
Pattern pat = Pattern.compile(word);
Matcher mat = pat.matcher(cadena);
return mat.replaceAll(newWord);
}
您實際上不需要了解Regex即可使用它,因為它將與文字字符串(如"a literal string"
匹配,我不知道它是否正是您要的,但對我來說很好用。
除了使用內置函數外,僅需兩美分。 讓它明顯的代碼做什么。 但是請包括程序可能失敗的所有可能條件。
使用try{} catch()
{異常處理}
在嘗試優化代碼之前,請先測量您的代碼以及瓶頸所在的位置。 不要猜
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
連接字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.