手机有国际键盘,看起来像:
我的程序执行以下操作:
将字符串转换为数字,例如
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/