2012-05-01 104 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); 
}