假设我们有类似的东西:
&firstString=someText&endString=OtherText
我想用其他东西替换“someText”。考虑到我不知道someText可能是什么(任何字符串)这一事实,最好的方法是什么,我所知道的是它将被& firstString =和& endString =
包围编辑:对不起看起来这还不够清楚。我不知道“someText”可能是什么,我唯一的信息是它将介于& firstString =和& endString =
之间我正在考虑多次使用拆分,但听起来很难看。
答案 0 :(得分:15)
您可以使用支持正则表达式的String#replaceAll,如下所示:
String newstr = str.replaceAll("(&firstString=)[^&]*(&endString=)", "$1foo$2");
答案 1 :(得分:3)
最容易理解的方法是搜索分隔符,并在其位置之间剪切子字符串,如下所示:
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);
}
答案 2 :(得分:2)
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
答案 3 :(得分:1)
当我理解这个问题时,你应该做这样的事情,但我不确定我是否完全得到了你的要求:
yourString = firstString + replacingString + endString;
如果您想要“替换”字符串:
replacedString = wholeString.substring(0, wholeString.lastIndexOf(endString) - 1);
replacedString = tempString.substring(firstString.length() + 1);
答案 4 :(得分:0)
此解决方案会检查我们是否未到达字符串的末尾,并且会多次出现。
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);
}
答案 5 :(得分:-1)
只是替换整个&firstString=someText&
,因为这包括我认为与URL相关的外部障碍?