如何格式化电话号码
问题描述:
这里是什么,我试图做一个例子:如何格式化电话号码
如果电话号码输入为6123044356它将会显示为(612)304-4356。如果客人打了5次退格键而不是删除最后输入的4个数字和短划线,请删除最后输入的5个数字。该点的电话号码将显示为(612)30。如果客人再次击中退格键3,则显示的最后3个数字将被删除,而不是括号。电话号码将显示为61.
有关如何操作的任何建议?
答
看看libphonenumber库。它有AsYouTypeFormatter类,它会为你处理。
或者,您可以使用PhoneNumberFormattingTextWatcher这基本上是做同样的事情。你会像这样使用它:
editText.addTextChangeListener(new PhoneNumberFormattingTextWatcher());
答
我会这样做,就像拨号程序那样做。这种方式最直观。
基本上,当他们打字时,只要一个数字,比如说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(任何更少只是删除短划线)。
我希望这是有道理的。我不认为用户应该输入/删除任何额外的字符,如圆括号和破折号。它应该全部由应用程序照顾。
我意识到我想知道如何使用代码。 – user268397