Java 在特定索引的文本中嵌入单词

Java 在特定索引的文本中嵌入单词,java,regex,Java,Regex,我有一个文本,我想在文本中的特定索引处包含一个单词。我设法找到了需要包含生词的文本索引。但是,我找不到一种方法将该索引用于嵌入过程。我尝试使用替换函数,如下所示: newSentence = oldSentence.replace(oldWord, (oldWord+" "+newWord)); 问题是,这种方法替换了所有出现的旧单词,而我只希望更改特定索引中的单词 非常感谢您对Java的任何建议,您不能更改字符串的内容 您必须通过提取要替换的单词前的文本和单词后的文本,并将所有三个单词前、单

我有一个文本,我想在文本中的特定索引处包含一个单词。我设法找到了需要包含生词的文本索引。但是,我找不到一种方法将该索引用于嵌入过程。我尝试使用替换函数,如下所示:

newSentence = oldSentence.replace(oldWord, (oldWord+" "+newWord));
问题是,这种方法替换了所有出现的旧单词,而我只希望更改特定索引中的单词


非常感谢您对Java的任何建议,您不能更改字符串的内容

您必须通过提取要替换的单词前的文本和单词后的文本,并将所有三个单词前、单词后连接到一个新字符串中,来构建一个新的字符串。查看StringBuilder库类

StringBuilder buf = new StringBuilder();
buf.append(oldSentence.substring(0,wordPos));
buf.append(newWord);
buf.append(oldSentence.substring(wordPos+oldWordLength));

在Java中,不能更改字符串的内容

您必须通过提取要替换的单词前的文本和单词后的文本,并将所有三个单词前、单词后连接到一个新字符串中,来构建一个新的字符串。查看StringBuilder库类

StringBuilder buf = new StringBuilder();
buf.append(oldSentence.substring(0,wordPos));
buf.append(newWord);
buf.append(oldSentence.substring(wordPos+oldWordLength));
这是假设索引值是要嵌入文本的第n个字符

这是假设您的索引值是要嵌入文本的第n个字符。

您可以使用。它可以替换给定字符串的一部分,如下所示:

StringBuilder sb = new StringBuilder(oldSentence);
sb.replace(wordPos, newWord.length()-1, newWord);
newSentence = sb.toString();
从:

将此序列的子字符串中的字符替换为指定字符串中的字符。子字符串从指定的开始处开始,并扩展到索引末尾-1处的字符,或者如果不存在这样的字符,则扩展到序列的末尾。首先删除子字符串中的字符,然后在开头插入指定的字符串。如有必要,此序列将加长以容纳指定的字符串

你可以用。它可以替换给定字符串的一部分,如下所示:

StringBuilder sb = new StringBuilder(oldSentence);
sb.replace(wordPos, newWord.length()-1, newWord);
newSentence = sb.toString();
从:

将此序列的子字符串中的字符替换为指定字符串中的字符。子字符串从指定的开始处开始,并扩展到索引末尾-1处的字符,或者如果不存在这样的字符,则扩展到序列的末尾。首先删除子字符串中的字符,然后在开头插入指定的字符串。如有必要,此序列将加长以容纳指定的字符串

您可以使用replaceFirst,但为了安全起见,您应该将文本转换为正则表达式引号字符串,以防单词包含任何特殊正则表达式字符(如点):

newSentence = oldSentence.replaceFirst(Pattern.quote(oldWord), oldWord+" "+newWord);
或者稍微有点雷格西,将wird转换为“向后看”:

newSentence = oldSentence.replaceFirst("(?<="Pattern.quote(oldWord)+")", " "+newWord);
您可以使用replaceFirst,但为了安全起见,您应该将文本转换为正则表达式引号字符串,以防单词包含任何特殊正则表达式字符(如点):

newSentence = oldSentence.replaceFirst(Pattern.quote(oldWord), oldWord+" "+newWord);
或者稍微有点雷格西,将wird转换为“向后看”:

newSentence = oldSentence.replaceFirst("(?<="Pattern.quote(oldWord)+")", " "+newWord);

你在特定索引上的确切含义是什么?你在特定索引上的确切含义是什么?另一个选项相同的结果:buf=newstringbuilderoldstation.insertwordPos,newWord;另一个选项与结果相同:buf=newStringBuilderRoldSession.insertwordPos,newWord;