java - 电话键盘字符串转数字

标签 java string loops for-loop

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

enter image description here

我的程序执行以下操作:

  • 将字符串转换为数字,例如 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 循环或其他东西来简写这段代码吗?

最佳答案

有很多方法可以实现这个结果,你可以使用 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;

}

关于java - 电话键盘字符串转数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47310514/

相关文章:

java - 我应该选择哪个依赖注入(inject)框架

javascript - 使用 JavaScript 按数字或字母字符将字符串拆分为 block

java - 绘制字符串的粗边框

c++ - 由 C++ 字符串类定义的字符串文字是否属于 const char[] 类型

c++ - 如何在循环外重新输入变量

java - 基于当前日期+时间查询 JPA 实体实例的最佳方法是什么?

java - 如何执行来自另一个应用程序的发布请求

java - 当我尝试单击“提交”按钮进入下一页时,30000 毫秒后超时

javascript - 我的代码中有一个错误

loops - Cocos2D 游戏循环说明