【问题标题】:Phonekeypad string to number电话键盘字符串到数字
【发布时间】:2017-11-15 14:53:43
【问题描述】:

有手机的国际键盘,它看起来像:

我的程序执行以下操作:

  • 将字符串转换为数字,例如 ABC 等于 1

  • 显示结果。

我正在这样做:

private static String getNumber(String s) {

    String result = "";
    for (int i = 0; i < s.length(); i++) {
        if (s.charAt(i) == 'A' || s.charAt(i) == 'B' || s.charAt(i) == 'C')
            result += "2";
        else if (s.charAt(i) == 'D' || s.charAt(i) == 'E' || s.charAt(i) == 'F')
            result += "3";
        else if (s.charAt(i) == 'G' || s.charAt(i) == 'H' || s.charAt(i) == 'I')
            result += "4";
        else if (s.charAt(i) == 'J' || s.charAt(i) == 'K' || s.charAt(i) == 'L')
            result += "5";
        else if (s.charAt(i) == 'M' || s.charAt(i) == 'N' || s.charAt(i) == 'O')
            result += "6";
        else if (s.charAt(i) == 'P' || s.charAt(i) == 'Q' || s.charAt(i) == 'R' || s.charAt(i) == 'S')
            result += "7";
        else if (s.charAt(i) == 'T' || s.charAt(i) == 'U' || s.charAt(i) == 'V')
            result += "8";
        else if (s.charAt(i) == 'W' || s.charAt(i) == 'X' || s.charAt(i) == 'Y' || s.charAt(i) == 'Z')
            result += "9";
        else
            result += s.charAt(i);
    }

    return result;
}

示例输入:1-800-Flowers

输出:1-800-3569377

问题:

我可以用 for 循环或其他东西来简写这段代码吗?

【问题讨论】:

    标签: java string loops for-loop


    【解决方案1】:

    有很多方法可以完成这个结果,你可以使用replace()得到你想要的数字:

    public static String getNumber(String s) {
        // Set all String to caps
        s = s.toUpperCase();
    
        // Replace the letters with the corresponding numbers
        s = s.replaceAll("(A|B|C)", "2");
        s = s.replaceAll("(D|E|F)", "3");
        s = s.replaceAll("(G|H|I)", "4");
        s = s.replaceAll("(J|K|L)", "5");
        s = s.replaceAll("(M|N|O)", "6");
        s = s.replaceAll("(P|Q|R|S)", "7");
        s = s.replaceAll("(T|U|V)", "8");
        s = s.replaceAll("(W|X|Y|Z)", "9");
    
        return s;
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      • 2011-02-23
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      相关资源
      最近更新 更多