Java中的字符串處理是我努力要學會做的很好的事情。目前我想接收一個字符串並替換我找到的任何字符。什麼是替換字符串中多個字符的有效方法?
這是我目前效率低下(和有點傻海事組織)的職能。它被寫入只是工作。
public String convertWord(String word)
{
return word.toLowerCase().replace('á', 'a')
.replace('é', 'e')
.replace('í', 'i')
.replace('ú', 'u')
.replace('ý', 'y')
.replace('ð', 'd')
.replace('ó', 'o')
.replace('ö', 'o')
.replaceAll("[-]", "")
.replaceAll("[.]", "")
.replaceAll("[/]", "")
.replaceAll("[æ]", "ae")
.replaceAll("[þ]", "th");
}
我跑1,000,000的運行,並花了8182ms。那麼我應該如何改變這個功能來提高效率呢?
發現解決方案:
功能轉換到這個
public String convertWord(String word)
{
StringBuilder sb = new StringBuilder();
char[] charArr = word.toLowerCase().toCharArray();
for(int i = 0; i < charArr.length; i++)
{
// Single character case
if(charArr[i] == 'á')
{
sb.append('a');
}
// Char to two characters
else if(charArr[i] == 'þ')
{
sb.append("th");
}
// Remove
else if(charArr[i] == '-')
{
}
// Base case
else
{
sb.append(word.charAt(i));
}
}
return sb.toString();
}
運行此功能1,000,000次需要518ms。所以我認爲這是有效的。感謝您的幫助球員:)
*部分*工作在這裏:http://stackoverflow.com/questions/1008802/converting-symbols-accent-letters-to-english-alphabet。我不知道'æ'和'þ'。 – Kobi 2011-03-29 09:52:36