在Java中,如何遍历字符串并检查它是否包含哈希映射中的键?

时间:2017-09-26 18:52:23

标签: java

目标是编写一个文本消息缩写扩展程序,它接受一个字符串并检查常用缩写,如LOL,IDK等,并用全长句替换它们,大笑,我不知道等等。

import java.util.HashMap;
import java.util.Scanner;

public class TextMsgExpander {

public static void main(String[] args) {

    Scanner scnr = new Scanner(System.in);
    System.out.println("Enter text: ");
    String userInput = scnr.nextLine();
    System.out.println("You entered: " + userInput);

    // Create new instance of Hash Map
    HashMap<String, String> map = new HashMap<String, String>();

    //Key value pairs
    map.put("LOL", "laugh out loud");
    map.put("IDK", "I don't know");
    map.put("BFF", "best friend forever");
    map.put("TTYL", "talk to you later");
    map.put("JK", "just kidding");
    map.put("TMI", "too much information");
    map.put("IMHO", "in my humble opinion");

    //Access points
    String LOL = map.get("LOL");
    String IDK = map.get("IDK");
    String BFF = map.get("BFF");
    String TTYL = map.get("TTYL");
    String JK = map.get("JK");
    String TMI = map.get("TMI");
    String IMHO = map.get("IMHO");

    System.out.println(TMI);

    // While user input contains any of the keys, replace keys with
    // values.
    return;
  }
 }

1 个答案:

答案 0 :(得分:0)

您可以在完整的密钥集上迭代(循环)并在userInput中查找它们,如果它们存在则将它们替换为地图中的相应值:

for (Map.Entry<String, String> entry : map.entrySet()) {
    if (userInput.contains(entry.getKey())) {
        userInput = userInput.replaceAll(entry.getKey(), entry.getValue());
    }
}
System.out.println("Converted string  - " + userInput);