gpt4 book ai didi

java - 在以给定子字符串结尾的每个单词之后插入一个单词

转载 作者:行者123 更新时间:2023-11-30 06:25:28 24 4
gpt4 key购买 nike

我需要在文本的每个单词之后以给定的子字符串结尾,插入指定的单词。我的代码在某种程度上有效,我认为在迭代 StringBuilder 对象时修改它不是一个好主意。正如您所看到的,它在最后两种情况下失败了,即“kalola”和“lalilo”。非常感谢!

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TextEditor {

public static void main(String[] args) {

String text = "Hello Mister James! Do you use trello fregiently? "
+ "Do you know Canelo Pavelo magenta ravelo sagenta! "
+ "lolita kalola lalilo lalita 333l lo.";

String regex = "\\b\\w+lo\\b";

String word = " 232 ";

StringBuilder copyOfText = new StringBuilder(text);

Pattern pattern = Pattern.compile(regex);

Matcher matcher = pattern.matcher(copyOfText);

while(matcher.find()) {
copyOfText.insert(matcher.end(), word);
}

//text = copyOfText.toString();

System.out.println(copyOfText);
}
}

收到的输出是:

Hello 232 Mister James! Do you use trello 232 fregiently? Do you know Canelo 232 Pavelo 232 magenta ravelo 232 sagenta! lolita kalo 232 la lalilo lalita 333l lo.

预期输出是:

Hello 232 Mister James! Do you use trello 232 fregiently? Do you know Canelo 232 Pavelo 232 magenta ravelo 232 sagenta! lolita kalola lalilo 232 lalita 333l lo.

最佳答案

正如评论中提到的,您可以使用 String.replaceAll而不是使用 while 循环进行迭代:

String text = "Hello Mister James! Do you use trello fregiently? "
+ "Do you know Canelo Pavelo magenta ravelo sagenta! "
+ "lolita kalola lalilo lalita 333l lo.";

String word = "232";

System.out.println(text.replaceAll("(\\w+lo\\b)", "$1 " + word));

输出:

Hello 232 Mister James! Do you use trello 232 fregiently? Do you know Canelo 232 Pavelo 232 magenta ravelo 232 sagenta! lolita kalola lalilo 232 lalita 333l lo.

关于java - 在以给定子字符串结尾的每个单词之后插入一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47293985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com