2013-06-28 170 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/> 
相关问题