2017-04-18 11 views
2

我目前在学校学习Java,而且我很难完成这一项任务。你应该做的是采取一个字符串,并在每个单词之间插入“like”以使其成为“青少年交谈”,即我喜欢喜欢喜欢代码的爱。在Java中插入字符串的部分

public String teenTalk(String sentence) 
{ 
    for (int i = 0; i < sentence.length(); i++) 
    { 
     if(sentence.substring(i, i+1).equals(" ")) 
     { 
      System.out.println("like"); 

     } 
    } 

    return sentence; 

} 

有谁知道我该如何在某个位置插入“like”,以及如何让它插入到它应该放置的空间中?正如你所看到的,我也遇到了无限循环的问题。

+0

除非限制,使用字符串函数,如更换的replaceAll。 – K139

+0

Java中String的一点是它是不可变的 - 你不能改变它。你只能创建一个新的'String'。学习语言越多,原因越明确。同时,您可以使用['StringBuilder'](http://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html)类构建新的'String'实例。你也可以使用'+ ='运算符,它实际上是'StringBuilder'的一个包装器(在这个语言的历史中)。 –

回答

3

你应该做的是取一个字符串并在每个词之间插入“like”在 之间以使其成为“青少年说话”。每次操作(即substring你的情况的方法)特定0​​时间

strings是不可改变的意义,你会得到一个新的string回到原来的string修改。或者,您可以使用StringBuilder(可变)或使用String#replace方法。

使用String#replace

public String teenTalk(String sentence){ 
    return sentence.replace(" ", " like "); 
} 

使用StringBuilder

public String teenTalk(String sentence) { 
     StringBuilder builder = new StringBuilder(); 
     for (int i = 0; i < sentence.length(); i++) { 
      if(sentence.charAt(i) == ' '){ 
       builder.append(" like "); 
      }else{ 
       builder.append(sentence.charAt(i)); 
      } 
     } 
     return builder.toString(); 
} 

假设这是输入:

System.out.println(teenTalk("teen talk")); 

输出:

teen like talk 
0
String text = "I love coding"; //Any string you wish 
StringJoiner sj= new StringJoiner(" like "); //here,"like" is the Join you need between every word 
Arrays.asList(text.split(" ")).forEach(word -> sj.add(word)); //we are splitting your text and adding each word. This will insert "like" after every addition except the last 
System.out.println(sj.toString()); // Converting to String 

了解更多关于StringJoiner这里https://www.mkyong.com/java8/java-8-stringjoiner-example/