2012-05-01 6 views
4

間の文字列を置き換えますのは、私たちのようなものがあるとしましょう:二つの文字列

&firstString=someText&endString=OtherText 

をそして、私は何か他のものとの「someText」を交換したいと思います。これは何を行うための最善の方法は、私はsomeTextが何であるかを知らないという事実(任意の文字列)を考慮して、私が知っているすべては、それが& firstStringに囲まれることである=と& endString =

編集されています。申し訳ありませんルックスこれほど明確ではない。私は

+0

正確に何をする必要がありますか?これまでに何を試みましたか? –

+0

クエリ文字列を再構築していますか? – birryree

+0

私は質問に明確化を追加しました。申し訳ありませんが、それが十分明確でない場合は – user220755

答えて

10

次のような正規表現をサポートしていString#replaceAllを使用することができます。

String newstr = str.replaceAll("(&firstString=)[^&]*(&endString=)", "$1foo$2"); 
-1
..私は、分割を複数回使用して考えていたが、それは醜い響き

=私が持っている唯一の情報は、それが& firstString =と& endStringの間になるということである、「someTextは」かもしれないのか分かりません

これはURLに関連すると思われる外側の障壁が含まれているため、&firstString=someText&全体を置き換えるだけですか?

+0

私はちょっと質問を明確にしました。私はそれが何であるかわからない(私はそれの周りの文字列を知っている) – user220755

+0

@ user220755ええ、dcpで言及したその正規表現のものを使用して[^ \\&] * – Omnaest

+0

でsometextを置き換えてください少し説明できますか? – 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); 

に基づいEDIT出力:

&firstString=Your new text&endString=OtherText 
+0

私はさらに質問を明確にしました。私は何かが(私はそれの周りの文字列を知っている)かもしれないかわからない – user220755

+0

それは問題ではなかった。 – Lion

+0

タイトル: "2つの文字列の間の文字列を置き換える" :)再び申し訳ありませんが、私のせいもありません:) – 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

我々は、文字列ANの最後のつもりはない、このソリューションをチェック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); 
} 
関連する問題