拆分字符串并从HashMap按键检索值

时间:2017-04-04 13:49:03

标签: java string hashmap

我遇到了一个问题,我需要将一个单词的缩写及其完整形式放入hashmap中。然后我需要制作一个程序,询问你的单词,然后为你打印地图中的完整单词。我可以用一个单词来做,但问题是当它用字符串询问许多键时。

例如:

给出的话:

tran. all of the wo. f. me

//此时我已将所有带圆点的单词作为键值放入hashmap,将其完整形式作为值。现在它应该打印给定单词作为完整版本,其中虚线单词被值替换。

完整版:

translate all of the words for me

当您在一个句子中询问多个键时,如何打印所有要求的值?

//我认为我应该使用.split来完成这项工作,但我不确定它是如何工作的。

感谢您的帮助!

3 个答案:

答案 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);