替换另一个字符串中最后一个字符串

Mag*_*nus 7 java regex string

假设我有一个字符串

string myWord="AAAAA";
Run Code Online (Sandbox Code Playgroud)

我想将"AA"替换为"BB",但仅限于最后一次出现,如下所示:

"AAABB"
Run Code Online (Sandbox Code Playgroud)

无论是与string.replace()也不string.replaceFirst()会做这项工作.有没有string.replaceLast()?而且,如果没有,是否会有一个或者有替代方案也在使用正则表达式?

Ami*_*oki 19

你可以这样做:

myWord = myWord.replaceAll("AA$","BB");
Run Code Online (Sandbox Code Playgroud)

$ 意思是在最后.

  • $表示字符串结尾.但是,如果最后一次出现不终止字符串怎么办? (17认同)

Sot*_*lis 17

查找最后一次出现的子字符串的索引.

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

int start = myWord.lastIndexOf(toReplace);
Run Code Online (Sandbox Code Playgroud)

创建一个StringBuilder(你可以根据需要连接字符串).

StringBuilder builder = new StringBuilder();
Run Code Online (Sandbox Code Playgroud)

在最后一次出现之前附加零件.

builder.append(myWord.substring(0, start));
Run Code Online (Sandbox Code Playgroud)

附加String您想要用作替代品.

builder.append(replacement);
Run Code Online (Sandbox Code Playgroud)

从最初的`String追加最后一次出现后的部分.

builder.append(myWord.substring(start + toReplace.length()));
Run Code Online (Sandbox Code Playgroud)

而且你已经完成了.

System.out.println(builder);
Run Code Online (Sandbox Code Playgroud)


Bis*_*_86 5

只需获取最后一个索引,然后将表达式替换为您想要替换的内容即可。

myWord是原话所说AABDCAADEFsourceWord是你想要替换的内容, sayAA targetWord是你想要用 say 替换的内容BB

StringBuilder strb=new StringBuilder(myWord);    
int index=strb.lastIndexOf(sourceWord);    
strb.replace(index,sourceWord.length()+index,targetWord);    
return strb.toString();
Run Code Online (Sandbox Code Playgroud)

当您只想用字符串替换字符串时,这很有用。更好的方法是使用模式匹配器并查找最后一个匹配的索引。从该索引中获取子字符串,使用替换函数,然后将其添加回原始字符串。这也将帮助您替换正则表达式