【问题标题】:format int to phone number将 int 格式化为电话号码
【发布时间】:2010-08-26 21:01:33
【问题描述】:

有没有办法可以将例如:0000000000 格式化为 (000)000-0000?我正在返回一个列表框,其中包含尚未格式化的电话号码集合。我想要的是格式化它。这就是我在视图中的内容:

<%= Html.ListBox("phoneList")%>

从控制器:

ViewData["phoneList"] = new SelectList(phoneList);

编辑

$('#phoneList').each(function() {
                var phoneNumber = $(this).text();
                var formatPhoneNumber = phoneNumber.replace(/(\d{3})(\d{3})(\d{4})/, '($1)$2-$3');
                alert(formatPhoneNumber);
            });

如何将它分配回列表框中?

【问题讨论】:

  • 这仅适用于美式电话号码。英国和其他欧洲国家/地区的数字格式不同。
  • hersh - 刚刚看到你的评论在它消失之前,所以我想你已经明白了。我不确切知道您拥有什么类型的元素,但我想如果您使用$(this).text() 获得原始值,您应该能够以相同的方式分配新值。 $(this).text(formatPhoneNumber)
  • patrick - 是的,我想通了,感谢您回复我。

标签: javascript jquery asp.net-mvc asp.net-mvc-2


【解决方案1】:

如果您说要在客户端执行此操作,然后在变量中给出电话号码,您可以这样做:

http://jsfiddle.net/HZbXv/

var str = "0000000000";

var res = '(' + str.substr(0,3) + ')' + str.substr(3,3) + '-' + str.substr(6);

alert(res);

或者这个:

http://jsfiddle.net/HZbXv/1/

var str = "0000000000";

var res = str.replace(/(\d\d\d)(\d\d\d)(\d\d\d\d)/, '($1)$2-$3');

alert(res);

编辑:

@Nick Craver 所述 第二个版本可以缩短为:

var res = str.replace(/(\d{3})(\d{3})(\d{4})/, '($1)$2-$3');

【讨论】:

  • +1 - 只是一个注释,您可以进一步缩小它:str.replace(/(\d{3})(\d{3})(\d{4})/, '($1)$2-$3');
【解决方案2】:

就这么简单。如果要处理多个数字,可以使用简单的 if 语句。

    YourVariable = YourVariable.replace(/(\d{1})(\d{3})(\d{3})(\d{4})/, "+$1 ($2)-$3-$4"); 

显示:+1 (800)-555-5555

    YourVariable = YourVariable.replace(/(\d{3})(\d{3})(\d{4})/, "($1)-$2-$3"); 

显示 (555)-555-5555

If 语句(我自己的代码):

if (form.FaxNumber.length = 11){
    form.FaxNumber.value = form.FaxNumber.value.replace(/(\d{1})(\d{3})(\d{3})(\d{4})/, "+$1 ($2)-$3-$4");
}
if (form.FaxNumber.length = 10){
    form.FaxNumber.value = form.FaxNumber.value.replace(/(\d{3})(\d{3})(\d{4})/, "($1)-$2-$3");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 2020-02-05
    • 2017-06-09
    • 1970-01-01
    相关资源
    最近更新 更多