【发布时间】:2011-07-25 03:30:21
【问题描述】:
Java 中的字符串处理是我正在努力学习做好的事情。目前我想接受一个字符串并替换我找到的任何字符。
这是我目前效率低下(而且有点愚蠢的 IMO)的功能。它是为了工作而编写的。
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 次,耗时 8182 毫秒。那么我应该如何继续更改此功能以使其更高效?
找到解决方案:
将函数转换为this
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 次需要 518 毫秒。所以我认为这足够有效。谢谢你们的帮助:)
【问题讨论】:
-
一些工作在这里:stackoverflow.com/questions/1008802/…。我不知道
æ和þ。
标签: java optimization string