javascript - 根据电话键盘将电话号码中的字母转换为数字

标签 javascript php jquery converters phone-number

我试图找到执行以下操作的最简单(或至少最短)的方法:

从输入字段中获取任何文本并将其转换如下:

abc => 2
def => 3
ghi => 4
...
wxyz => 9

*不属于英文字母的任何其他字符都将转换为“#”(或任何其他特殊字符)。

这可能听起来很简单,但代码可以变得非常简单和优雅,这就是我正在寻找的,php 或 js/jquery 脚本中的行数更少。如果它转换“abc”、“def”,我可以完成剩下的。

最佳答案

构建一个关联数组,将 A 映射到 2,B 映射到 2,C 映射到 2,D 映射到 3,等等。

遍历字符串,一次一个字符。如果在数组中找到一个字符,则将其连接到您的输出;如果没有将“#”连接到输出。您可能希望首先将字符串转换为全部大写或全部小写。

编辑补充:我没有包括代码,因为看起来 OP 知道 JavaScript 和 PHP,当然,代码会有所不同,但原理是相同的。

如果绝对肯定字符串是 ASCII/UTF-8/ISO-8859,则可以利用大写字母占据十进制 65 到 90 代码点这一事实,并且分配了三个字母到从 2 到 9 的每个数字,然后计算结果。 (请注意,美国电话中缺少 Q,Z 映射为零。)然而,这与其说是优雅,不如说是过于棘手。

今天早些时候我想起了这个:

“首先,调试比编写代码难两倍。所以, 如果你尽可能巧妙地编写代码,那么根据定义,你就是 不够聪明,无法调试它。” -- 布赖恩·克尼汉 (Brian Kernighan) 和 P.J. 普劳格, 编程风格的要素

关于javascript - 根据电话键盘将电话号码中的字母转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25412594/

相关文章:

javascript - JavaScript 中类似 Eclipse 的 UI(带有 View 、组等)

javascript - 导入支持其他 javascript 函数的 HTML 部分

jquery - 动态 fnAddData 时,DataTables 显示 "Processing..."标签

php - 在 php 中获取用户的大洲/国家或位置?

php - jQuery/AJAX 检索新插入记录的 ID 并在页面刷新之前在 HTML 中使用它

javascript - 确定何时以 HTML 加载图像?

javascript - Chart.js 的新扩展语法是什么?

带有时间拉伸(stretch)的javascript音高转换

php - 服务器端处理的DataTable上的"Column Index"

php - CakePHP 3.0 - 正则表达式验证