gpt4 book ai didi

java - 替换字符串中许多字符的有效方法是什么?

转载 作者:IT老高 更新时间:2023-10-28 21:18:55 25 4
gpt4 key购买 nike

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 毫秒。所以我认为这足够有效。谢谢你们的帮助:)

最佳答案

您可以创建一个长度为 Character.MAX_VALUE 的 String[] 表。 (包括小写的映射)

随着替换变得越来越复杂,执行它们的时间将保持不变。

private static final String[] REPLACEMENT = new String[Character.MAX_VALUE+1];
static {
for(int i=Character.MIN_VALUE;i<=Character.MAX_VALUE;i++)
REPLACEMENT[i] = Character.toString(Character.toLowerCase((char) i));
// substitute
REPLACEMENT['á'] = "a";
// remove
REPLACEMENT['-'] = "";
// expand
REPLACEMENT['æ'] = "ae";
}

public String convertWord(String word) {
StringBuilder sb = new StringBuilder(word.length());
for(int i=0;i<word.length();i++)
sb.append(REPLACEMENT[word.charAt(i)]);
return sb.toString();
}

关于java - 替换字符串中许多字符的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5470630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com