替换两个字符串之间的字符串

2022-09-02 20:34:23

假设我们有这样的东西:

&firstString=someText&endString=OtherText

我想用别的东西代替“someText”。考虑到我不知道someText可能是什么(任何字符串),并且我所知道的只是它将被&firstString=和&endString=包围的事实,最好的方法是什么?

编辑:抱歉,看起来这还不够清楚。我不知道“someText”可能是什么,我唯一的信息是它将在&firstString=和&endString=之间。

我正在考虑多次使用split,但它听起来很丑陋。


答案 1

您可以使用支持正则表达式的 String#replaceAll,如下所示:

String newstr = str.replaceAll("(&firstString=)[^&]*(&endString=)", "$1foo$2");

答案 2

最容易理解的方法是搜索分隔符,并在它们的位置之间剪切一个子字符串,如下所示:

String str = "&firstString=someText&endString=OtherText";
String firstDelim = "&firstString=";
int p1 = str.indexOf(firstDelim);
String lastDelim = "&endString=";
int p2 = str.indexOf(lastDelim, p1);   // look after start delimiter    
String replacement = "quick_brown_fox";
if (p1 >= 0 && p2 > p1) {
    String res = str.substring(0, p1+firstDelim.length())
               + replacement
               + str.substring(p2);
    System.out.println(res);
}