gpt4 book ai didi

Java - 一次更改字符串中的多个单词?

转载 作者:行者123 更新时间:2023-12-01 18:16:02 26 4
gpt4 key购买 nike

我正在尝试创建一个程序,可以缩写用户给出的字符串中的某些单词。

到目前为止我的布局是这样的:

从 .txt 文件创建 HashMap ,如下所示:

thanks,thx
your,yr
probably,prob
people,ppl
  • 从用户处获取字符串
  • 将字符串拆分为单词
  • 检查 HashMap 以查看该单词是否作为键存在
  • 使用hashmap.get()返回键值
  • 用返回的键值替换单词
  • 返回更新后的字符串

一切都工作得很好,直到我尝试更新字符串:

public String shortenMessage( String inMessage ) {

String updatedstring = "";
String rawstring = inMessage;
String[] words = rawstring.replaceAll("[^a-zA-Z ]", "").toLowerCase().split("\\s+");

for (String word : words) {
System.out.println(word);
if (map.containsKey(word) == true) {
String x = map.get(word);
updatedstring = rawstring.replace(word, x);
}
}

System.out.println(updatedstring);
return updatedstring;
}

输入:

thanks, your, probably, people

输出:

thanks, your, probably, ppl

有谁知道如何更新字符串中的所有单词?

提前致谢

最佳答案

updatedstring = rawstring.replace(word, x);

这会不断用单个替换的原始字符串替换更新的字符串。

你需要做类似的事情

updatedstring = rawstring;
...

updatedString = updatedString.replace(word, x);

<小时/>编辑:

这是您遇到的问题的解决方案,但您的代码还存在一些其他问题:

  1. 您的替换不适用于您需要小写或删除字符的内容。您创建从原始字符串的更改版本迭代的单词数组。然后您返回并尝试替换原始原始字符串中不存在的更改版本。这不会找到您认为要替换的单词。

  2. 如果您正在进行全局替换,您可以只创建一组单词而不是数组,因为一旦单词被替换,它就不会再出现。

  3. 您可能希望一次替换一个单词,因为全局替换可能会导致奇怪的错误,其中替换映射中的单词是另一个替换单词的子单词。不要使用 String.replace,而是创建一个单词数组/列表,迭代单词并根据需要替换列表中的元素并将它们连接起来。在 Java 8 中:

    String.join("", elements);

关于Java - 一次更改字符串中的多个单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29441550/

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