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

时间:2012-09-08 14:35:01

标签: java string validation integer vcard

我正在创建一个可以读取VCards的电话簿程序。问题在于电话号码。通常情况下,它们在美国会是这样的:

0771234560

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

+94771234560(22)772324000

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

如何将电话号码存储为字符串,但可以防止有问题的条目?

3 个答案:

答案 0 :(得分:12)

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

不要只限于特定字符 - 例如,你不想接受“)0(”作为电话号码 - 使用合理的模式。Wikipedia page on local conventions for phone numbers可能在这方面有用 - 或者你可以寻找其他来源。你可能也想认为有点宽容,因为不是每个人都会遵循确切的模式。但是要实现微妙的平衡。

答案 1 :(得分:5)

不要将数字类型用于电话号码,请坚持使用String

进行某种形式的输入验证。为您的电话号码定义一些限制,在阅读卡时,请根据您的格式检查String:如果电话号码与您的限制不符,请拒绝。

在本网站搜索有关电话号码验证的问题/答案。

答案 2 :(得分:4)

添加两个电话号码意味着什么?所以,IMO,而不是数字。

你仍然应该尝试验证,但是如果你想接受任何和所有任意的国际号码,包括他们如何写的本地约定,这将是令人沮丧的。