我遇到了一个问题,我需要将一个单词的缩写及其完整形式放入hashmap中。然后我需要制作一个程序,询问你的单词,然后为你打印地图中的完整单词。我可以用一个单词来做,但问题是当它用字符串询问许多键时。
例如:
给出的话:
tran. all of the wo. f. me
//此时我已将所有带圆点的单词作为键值放入hashmap,将其完整形式作为值。现在它应该打印给定单词作为完整版本,其中虚线单词被值替换。
完整版:
translate all of the words for me
当您在一个句子中询问多个键时,如何打印所有要求的值?
//我认为我应该使用.split来完成这项工作,但我不确定它是如何工作的。
感谢您的帮助!
答案 0 :(得分:0)
您应该使用split()
方法获取所有输入的单词并将其存储在String[]
中,然后迭代这些单词并尝试根据地图中各自的值更改它们。
您的代码将是这样的:
Map<String, String> abbrev = new HashMap<String, String>();
String str="tran. all of the wo. f. me";
String[] words = str.split(" ");
String result = "";
for (String word : words) {
if(abbrev.get(word) != null){
result= result+ abbrev.get(word);
}else{
result= result+ word;
}
result= result+ " ";
}
注意:强>
请注意,您可以使用StringBuilder
作为构建结果String
的最佳方法。
<强>样本:强>
这是working DEMO。
答案 1 :(得分:0)
我认为这就是你的意思:
String yourString = "tran. all of the wo. f. me";
for(String word : yourString.split("\\s+"))
System.out.println(map.get(word));
Split用于从字符串中获取每个单词,用空格分隔。
答案 2 :(得分:0)
有很多方法可以实现您的目标。其中一个是:
Map<String, String> map = new HashMap<>();
map.put("tran", "translate");
map.put("wo", "words");
map.put("f", "for");
String word = "tran. all of the wo. f. me";
String[] words = word.split(" ");
for(int i=0;i<words.length;i++) {
if(words[i].endsWith(".")) {
words[i] = map.get(words[i].substring(0, words[i].length() - 1));
}
}
word = String.join(" ", words);