【发布时间】:2017-05-31 03:59:45
【问题描述】:
我正在使用 HashMap 来存储缩写的完整形式。
public class Test {
public static void main(String[] args) {
Map<String, String> slangs = new HashMap<String, String>();
slangs.put("lol", "laugh out loud");
slangs.put("r", " are ");
slangs.put("n", " and ");
slangs.put("idk", " I don't know ");
slangs.put("u", " you ");
Set set = slangs.entrySet();
Iterator i = set.iterator();
String sentence = "lol how are you";
StringBuilder sb = new StringBuilder();
for (String word : sentence.split(" ")) {
while(i.hasNext()) {
Map.Entry<String, String> me = (Map.Entry)i.next();
if (word.equalsIgnoreCase(me.getKey())) {
sb.append(me.getValue());
continue;
}
sb.append(word);
}
}
System.out.println(sb.toString());
}
}
输出是:
lollollollaugh out loudlol
这里出了什么问题,我该如何解决?
【问题讨论】:
-
我知道你为什么让它变得如此复杂。在我的第一个想法中,只需将句子分成单词,然后检查
slangs是否包含它。 -
你想得到什么结果?
-
输出应该是:"laugh out how are you"
-
@Mahn 但我该怎么做呢?
-
尝试打印所有结果,我不知道你为什么要使用 while(i.hasNext()) 首先,你的句子不起作用,因为你逐字逐句,这意味着例如在大声笑的情况下,在你的句子中你有俚语而不是短语本身。我认为您应该在互联网上查看一些解决方案并获得一些基础。