我有一个文字,我想在特定索引的文本中加入一个单词。我设法找到了我需要包含新单词的文本索引。但是,我找不到将该索引用于嵌入过程的方法。我尝试使用replace函数如下:
newSentence = oldSentence.replace(oldWord, (oldWord+" "+newWord));
问题是这个方法替换了所有出现的oldWord,而我只希望改变特定索引处的单词。
我感谢任何建议
答案 0 :(得分:2)
您可以使用StringBuilder#replace()
。它可以替换给定String
的一部分,如下所示:
StringBuilder sb = new StringBuilder(oldSentence);
sb.replace(wordPos, newWord.length()-1, newWord);
newSentence = sb.toString();
来自javadoc:
public StringBuilder replace(int start,
int end,
String str)
使用指定String中的字符替换此序列的子字符串中的字符。子字符串从指定的开始处开始并延伸到索引结束处的字符 - 1或如果不存在此类字符则延伸到序列的结尾。首先删除子字符串中的字符,然后在start处插入指定的String。 (如果需要,将延长此序列以容纳指定的字符串。)
答案 1 :(得分:1)
在Java中,您无法更改String的内容。
您必须通过提取要替换的单词之前的文本和单词之后的文本,并在新的String中连接所有三个(之前,之后,之后)来构建一个新文本。查看StringBuilder
库类。
StringBuilder buf = new StringBuilder();
buf.append(oldSentence.substring(0,wordPos));
buf.append(newWord);
buf.append(oldSentence.substring(wordPos+oldWordLength));
答案 2 :(得分:1)
oldWord.substring(0, index) + embeddedText + oldWord.substring(index);
这假设您的索引值是您想要嵌入文本的第n个字符。
答案 3 :(得分:1)
您可以使用replaceFirst()
,但为了安全起见,您应该将文本转换为正则表达式引用的字符串,以防“word”包含任何sprcial正则表达式字符(如点):
newSentence = oldSentence.replaceFirst(Pattern.quote(oldWord), oldWord+" "+newWord);
或稍微“regexy”,将wird转变为后视:
newSentence = oldSentence.replaceFirst("(?<="Pattern.quote(oldWord)+")", " "+newWord);