java:在字符串中查找单词,如果它位于特定位置,则将其替换为新单词

时间:2012-03-05 06:40:04

标签: java string

我有一个示例字符串,例如:

  

“我喜欢板球。我喜欢足球。我喜欢网球。我喜欢每场比赛!   “

现在我要做的是第一次将(位置 1 )替换为“我们”。所以它变成

  

我们喜欢板球。我喜欢足球。我喜欢网球。我喜欢每一个人   游戏!!! “

在第二轮比赛中,我想将(位置 7 )替换为“我们”。

  

“我喜欢板球。我喜欢足球。我们喜欢网球。我喜欢每一个人   游戏!!! “

所以我的意思是用一个新词替换一个特定位置的单词。到目前为止,我尝试了以下内容:

  1. ReplaceAll - 仅在单词是唯一的时候工作但在其他所有情况下都失败。
  2. StringTokenizer - 用它来获得一个arraylist。在特定位置替换了单词,然后再次附加了arraylist中的所有元素。问题是特殊字符丢失。
  3. 请建议更好的方法。

    编辑:分隔符可以更改,而不是具体的“”。

4 个答案:

答案 0 :(得分:1)

yourString.split(" ")给出一系列单词。将新值分配给指定的索引,然后通过空格(“”)分隔符附加条目以生成新的结果字符串。

public static void main(String args[]) throws Exception 
{
    String testString = " I Love cricket. I Love football. I Love tennis. I Love every game!!! ";
    String[] words = testString.split(" ");
    words[7] = "We";
    String newString = "";

    for (int i = 0; i < words.length; i++)
        newString += " " + words[i];

    System.out.println(newString);
}

答案 1 :(得分:0)

请改用StringBuilder,使用insert()方法。

答案 2 :(得分:0)

StringBuilder sb = 
    new StringBuilder(" I Love cricket. I Love football. I Love tennis. I Love every game!!! ")

sb.replace(1, 2, "We")
  .replace(35, 36, "We")

return sb.toString()

如果你需要动态找到“我”的位置并用“我们”替换其中一些,那么这是另一个故事,但你明白了。

replace(int start,int end,String str): 用指定String中的字符替换此序列的子字符串中的字符。 它返回这个,所以你可以链接几个替换调用。

答案 3 :(得分:-1)

而不是使用replaceAll使用直接正则表达式Pattern。而只是替换你的第一场比赛而不是全局比赛。或者只使用replaceFirst()