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

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

0771234560

但如果电话号码来自外国,则看起来像这样。

+94771234560或者(22)772324000

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

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

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

不要只限于特定的字符 – 例如,你不想接受“)0(”作为电话号码 – 使用合理的模式。 关于电话号码的本地公约的维基百科页面可能在这方面有用 -或者你可以寻找其他来源。你可能也想考虑有点宽容,因为不是每个人都会遵循确切的模式。但是要实现微妙的平衡。

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

做某种forms的输入validation。 对您的电话号码定义一些限制,并在读取卡时,根据您的格式检查String :如果电话号码与您的限制不符,则拒绝它。

搜索本网站以获取有关电话号码validation的问题/答案。

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

您仍然应该尝试validation,但如果您想接受任何和所有任意国际号码,包括他们如何编写的当地惯例,那将是令人沮丧的。