替换另一个字符串中某个字符串的最后一次出现

2022-09-02 22:53:45

假设我有一个字符串

string myWord="AAAAA";

我想用“BB”替换“AA”,但只是最后一次出现,如下所示:

"AAABB"

string.replace() 和 string.replaceFirst() 都不能完成这项工作。有没有 string.replaceLast()?而且,如果没有,是否会有一个,或者是否有另一种替代方案也使用正则表达式?


答案 1

查找上次出现的子字符串的索引。

String myWord = "AAAAAasdas";
String toReplace = "AA";
String replacement = "BBB";

int start = myWord.lastIndexOf(toReplace);

创建一个(如果需要,可以只连接字符串)。StringBuilder

StringBuilder builder = new StringBuilder();

将部件追加到最后一次出现之前。

builder.append(myWord.substring(0, start));

附加要用作替换的 。String

builder.append(replacement);

将部分追加到原始'String.的最后一次出现之后。

builder.append(myWord.substring(start + toReplace.length()));

大功告成。

System.out.println(builder);

答案 2

您可以执行以下操作:

myWord = myWord.replaceAll("AA$","BB");

$意味着在最后。