2010-08-26 2 views
4

Есть ли способ форматировать, например: 0000000000 в (000) 000-0000? Я возвращаю список, который содержит коллекцию номера телефона, который еще не сформирован. Мне хотелось бы отформатировать его. Это то, что я имею в представлении:формат int на номер телефона

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

и от контроллера:

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

Edit

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

как бы я присвоить эту спину, чтобы показать в ListBox?

+1

Это будет работать только для телефонных номеров в стиле США. Великобритания и другие европейские страны форматируют свои номера по-разному. – ChrisF

+0

hersh - Просто увидел ваш комментарий, прежде чем он исчез, поэтому я предполагаю, что вы это поняли. Я точно не знаю, какой тип элемента у вас есть, но я предполагаю, что если вы получили исходное значение с '$ (this) .text()', вы должны иметь возможность назначать новое значение таким же образом. '$ (this) .text (formatPhoneNumber)' – user113716

+0

patrick - да, я понял это и спасибо, что вернулся ко мне. – hersh

ответ

6

Если вы говорите, что вы хотите сделать это на стороне клиента, то данный номер телефона в переменной, вы можете сделать это:

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'); 
+5

+1 - Только примечание, которое вы можете немного уменьшить: 'str.replace (/ (\ d {3}) (\ d {3}) (\ d {4}) /, '($ 1) $ 2 - $ 3 '); ' –

+0

@Nick - Хорошая точка. Я склонен забывать о кванторах. – user113716

+0

@ Ник и Патрик - спасибо, ребята! – hersh

1

Как бы просто это. Можно использовать простой оператор 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 (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"); 
} 
Смежные вопросы