java:在字符串中找到一个单词,如果它位于特定位置,则用一个新词替换它



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

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

现在我想做的是第一次将I(位于1位置)替换为"We"。所以它变成了

"我们喜欢板球。我喜欢足球。我喜欢网球。我喜欢每一件事游戏"

在第二次运行中,我再次将I(位于7位置)替换为"We"。

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

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

  1. ReplaceAll-仅在单词为uniques时有效,但在其他所有场景中都失败
  2. StringTokenizer-用它来获取数组列表。替换了特定位置的单词,然后再次添加了数组中的所有元素。问题是特殊字符丢失了

请建议一个更好的方法。

编辑:delimeter可以更改,并且不是专门的"。

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);
}

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

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):将此序列的子字符串中的字符替换为指定字符串中的字符串。它会返回此消息,这样您就可以链接多个替换调用。

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

最新更新