如何格式化电话号码

时间:2013-12-17 15:34:07

标签: android regex

以下是我正在尝试做的一个例子:

如果输入的电话号码为6123044356,则显示为(612)304-4356。如果客人按下退格键5次而不是删除最后输入的4个数字和短划线,请删除最后输入的5个数字。此时的电话号码将显示为(612)30。如果客人更多次点击退格键3,则会删除显示的最后3个数字,而不是括号。电话号码将显示为61。

有关如何执行此操作的任何建议吗?

2 个答案:

答案 0 :(得分:1)

查看libphonenumber库。它中有AsYouTypeFormatter类,它将为您处理。

或者你可以使用基本上做同样事情的PhoneNumberFormattingTextWatcher。你可以像这样使用它:

editText.addTextChangeListener(new PhoneNumberFormattingTextWatcher());

答案 1 :(得分:0)

我会像拨号器那样做。这种方式最直观。

基本上当他们打字时,只要一个数字(例如1234567)达到7位数,就会将其拆分为123-4567(对于用户而言)。然后当它达到10位数时,123-4567890,将它分开,如(123)456-7890为他们。当它们达到11位数时,将格式更改为1-(234)567-8901。

当他们从11位数字中删除号码时,只要他们达到10位数,请更改回(123)456-7890。之后,只要位数小于10,就将格式更改回123-456789。保持它的格式,直到它们达到六位数,只需将其更改为123456。

当用户达到一定数量的数字时,通过更改数字与可识别表单之间的数字,它会巧妙地警告用户他们已经创建了一个实数,或者有太多或没有足够数字的数字是实数。

我建议使用以下阈值:

  • 11位数:1-(234)567-8901
  • 10位数:(123)456-7890(任何小于此的东西看起来都是7位数,末尾有数字)
  • 7位数:123-4567(不再只是删除短划线)。

我希望这是有道理的。我不认为用户应该输入/删除任何额外的字符,如括号和短划线。它应该由应用程序完成。