2013-06-28 168 views
0

說我有一個字符串,說String stringy = "<Monkey><Banana><Raffle/>"插入特定字符之間的字符串在另一個字符串

和另一個字符串String stringier = <Cool stuff to add/>

我如何可以插入stringier<Banana>收盤>和開口<Raffle/><之間?我無法使用字符串的索引,因爲stringy可能在<Raffle/>之前的字符多或少,並且可能永遠不會是同一個字符。有任何想法嗎?

+1

這是XML還是您的自定義標記語言語法? – jlordo

+1

如果這實際上是XML(在此時它在語法上不正確),那麼您可能希望將其視爲XML而不僅僅是字符串。 Java對XML有着豐富的支持。對於這樣一個簡單的用例來說,這可能是過度的,但是如果你的應用程序充滿了這樣的語句,那麼可能值得投入時間學習XML API的 – DaveH

+0

@DaveHowes它是xml,但上面只是一個(窮人)簡化了我正在嘗試做的事情。我會研究API的,但screenmutt的答案現在肯定會做。 – MrTunaDeluxe

回答

3

你只是在尋找和替換?如果不是,你可以擴展你的問題嗎?

stringy = stringy.replace("<Banana><Raffle/>", "<Banana>"+ stringier +"<Raffle/>") 
+0

附帶的標準API容易得多,將始終如一。但無論是之前,在這種情況下,有時可能是 ... 將在仍然的replaceAll工作,如果它是'stringy.replaceAll( 「>」, 「>」 + stringier 「」 )'? – MrTunaDeluxe

+1

是的。這將工作。你可以看看學習[Regex](http://www.vogella.com/articles/JavaRegularExpressions/article.html),如果你進入高級查找和替換,這可能會有所幫助。我非常想擁有結婚正則表達式,我非常愛他們。 – screenmutt

+0

我很熟悉他們,但我不是任何方式的專家,但我會多看看他們。感謝你的回答! – MrTunaDeluxe

0

這可能是另一種選擇:

stringy = stringy.substring(0, stringy.indexOf("<Banana>") + "<Banana>".length()) 
     + stringier 
     + stringy.substring(stringy.indexOf("<Banana>") + "<Banana>".length()); 
0

您可以使用String.indexOf找到另一個字符串中的字符串的發生。所以,也許它會看起來像這樣。

String stringy = "<Monkey><Banana><Raffle/>"; 
    String stringier = "<Cool stuff to add/>"; 

    String placeToAdd = "<Banana><Raffle/>"; 
    String addAfter = "<Banana>"; 
    int temp; 

    temp = stringy.indexOf(placeToAdd); 
    if(temp != -1){ 
     temp = temp+addAfter.length(); 

     stringy = stringy.substring(0, temp) + stringier + stringy.substring(temp+1, stringy.length()); 

     System.out.println(stringy); 
    } else { 
     System.out.println("Stringier \'" + stringier+"\" not found"); 
    } 

查看其他答案後,替換可能是比子字符串的東西更好的選擇。

0

Java字符串是不可變的,但StringBuilder不是。

public class StringyThingy { 
    public static void main(String[] args) { 
    StringBuilder stringy = new StringBuilder("<Monkey><Banana><Raffle/>"); 

    System.out.println(stringy); 

    // there has to be a more elegant way to find the index, but I'm busy. 
    stringy.insert(stringy.indexOf("Banana")+"Banana".length()+1,"<Cool stuff to add/>"); 

    System.out.println(stringy); 
    } 
} 

// output 
<Monkey><Banana><Raffle/> 
<Monkey><Banana><Cool stuff to add/><Raffle/> 
相關問題