2012-05-01 135 views
4
之间的字符串

比方说,我们有这样的事:更换两个字符串

&firstString=someText&endString=OtherText 

而且我想用别的东西来代替“SomeText”则会。什么是做到这一点考虑的事实,我不知道someText可能是什么(任意字符串),最好的办法,所有我知道的是,它会与& firstString =和& endString =

编辑所包围:对不起外观像这样不够清楚。我不知道什么是“SomeText”则会可能是,我的唯一信息是,它会之间& firstString =和& endString =

我想使用分裂多次,但它听起来丑..

+0

究竟是什么,你需要做什么?你到目前为止尝试过什么? –

+0

你正在重建查询字符串吗? – birryree

+0

我加了一个澄清的问题,对不起,如果它不够清楚:) – user220755

回答

10

您可以使用String#replaceAll有这样的正则表达式的支持:

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

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

+0

我刚才澄清了这个问题。我不知道什么文本可能是(我只知道它周围的字符串) – user220755

+0

@ user220755是的,然后使用dcp提到的正则表达式的东西,并用[^ \\&] * – Omnaest

+0

取代某些文字,你能解释一点吗? – user220755

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 
+0

我刚才澄清了这个问题。我不知道什么文字可能是(我只知道它周围的字符串) – user220755

+0

这不是问题。 – Lion

+0

标题是:“在两个字符串之间替换一个字符串”:)对不起,如果它不清楚,我的错误:) – user220755

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); 
} 
1

我的理解这个问题,你应该做这样的事情,但我不知道我完全得到了你所问:

yourString = firstString + replacingString + endString; 

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

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

该解决方案将检查我们不会字符串的结束的d会多次出现。

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); 
}