我一直在互联网上寻找答案一段时间了,但我仍然找不到我需要的确切答案。
我正在创建一个允许用户在配置文件中编写自己的自定义消息的应用程序。这些自定义消息中的大多数都需要应该按特定顺序的实际值替换的参数。我最担心的是更换的速度。
示例
String对象通过一个方法进行更改,该方法用替换替换第一个匹配项。
String result = replaceFirst("» The user %name% doesn't exist!", "%name%", "player123")
然后变成
System.out.println(result) // Prints "» The user player123 doesn't exist!"
我创建了自己的类,它将支持多个目标和多个替换,这意味着在某些情况下replaceFirst(String original, String target, String replacement)
方法将被多次使用,这需要速度。
我可以使用String.replaceFirst(String regex ,String replacement),对吗?是的,但是replaceFirst也支持正则表达式,如果String对象中有一些正则表达式字符,它不会导致一些问题吗?我不需要任何正则表达式模式,我只需要在String对象中用另一个String替换特定的单词/字符。
这是我到目前为止所写的:
private static String replaceFirst(String original, String replace, String replacement) {
int currIndex = original.indexOf(replace, 0);
if (currIndex < 0) {
return original;
}
int originl = original.length();
int repll = replacement.length();
StringBuilder result = new StringBuilder();
int index = 0;
if (currIndex == 0) {
result.append(replacement);
result.append(original.substring(repll));
index += originl;
} else {
result.append(original.substring(0, currIndex));
result.append(replacement);
index += currIndex + replace.length();
}
if (index < originl) {
result.append(original.substring(index));
}
return result.toString();
}
这很可能很糟糕,问题很愚蠢,所以请建议我应该做些什么。