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

假设我们有类似的东西:

&firstString=someText&endString=OtherText 

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

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

我在考虑多次使用拆分,但听起来很难看。

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

 String newstr = str.replaceAll("(&firstString=)[^&]*(&endString=)", "$1foo$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); } 
 yourString.replace("someText", "somethingElse"); 

编辑基于澄清

 String x = "&firstString=someText&endString=OtherText"; int firstPos = x.indexOf("&firstString=") + "&firstString=".length(); int lastPos = x.indexOf("&endString", firstPos); String y = x.substring(0,firstPos) + "Your new text" + x.substring(lastPos); System.out.println(y); 

输出:

 &firstString=Your new text&endString=OtherText 

当我理解这个问题时,你应该做这样的事情,但我不确定我是否完全得到了你的要求:

 yourString = firstString + replacingString + endString; 

如果你想要“替换”字符串:

 replacedString = wholeString.substring(0, wholeString.lastIndexOf(endString) - 1); replacedString = tempString.substring(firstString.length() + 1); 

这个解决方案检查我们是不是在字符串的末尾,并且会在多次出现时进行。

  int startIndex = text.indexOf(startDelim); while (startIndex > -1) { int endIndex = text.indexOf(endDelim, startIndex); String endPart = ""; if ((endIndex + endDelim.length()) < text.length()) endPart = text.substring(endIndex + endDelim.length()); text = text.substring(0, startIndex) + replacementText + endPart; startIndex = text.indexOf(startDelim); } 

只是替换整个&firstString=someText&因为这包括我认为与URL相关的外部障碍?