java - 将电话号码存储为字符串时如何防止输入错误?

标签 java string validation integer vcf-vcard

我正在创建一个可以读取 VCard 的电话簿程序。问题出在电话号码上。通常,在美国他们会是这样的:

0771234560

但如果电话号码来自国外,它会是这样的。

+94771234560 或者 (22)772324000

现在有 +() 标志需要处理!我目前正在将电话号码(电子名片将它们作为字符串包含)转换为数字。但是,如果我将允许电话号码作为字符串,那么用户可能会做一些疯狂的事情,比如在联系表单中插入姓名作为电话号码。

如何将电话号码存储为字符串,同时防止有问题的输入?

最佳答案

肯定会使用字符串,但要验证它。仅仅因为它是一个字符串并不意味着您必须接受任何 数据。您应该考虑使用正则表达式(或者可能是一系列正则表达式)来验证数据。

不要只将其限制为特定字符 - 例如,您不想接受 ")0("作为电话号码 - 使用合理的模式。Wikipedia page on local conventions for phone numbers 可能在这方面有帮助 - 或者你可以寻找其他来源。您可能还想考虑有点宽容,因为不是每个人都会遵循确切的模式。不过需要达到微妙的平衡。

关于java - 将电话号码存储为字符串时如何防止输入错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12331656/

相关文章:

Java:无法理解 XML DOM 解析器代码

java - Tween 引擎 - Tween.to 忽略目标值

regex - 如何在 MATLAB 中将字符串解析为字母、数字等?

java - 使用我的代码中的 2 个变量创建循环(Android)

c - sscanf 字符串拆分不起作用

validation - Vue.js VeeValidate 如何在所有数据都有效之前阻止提交数据

javascript - 带有 JQuery 提示的 Digg 样式表单验证

Java 在对象上同步

java - xercesJ for XSD 1.1 : Validator correctly processes assertions, SAXParser 显然没有

java - 星火Java : Upload file did't work in Spark java framework