Номера с разделителем дефис (от 123456789 до 123-45-6789)

У меня есть номер вроде 123456789. Я хочу отобразить номер вроде 123-45-6789. Как я могу добиться этого в asp.net с С#?

Этот номер хранится в базе данных в формате varchar. Я просто хочу отобразить число в метке с правильным дефисом.


person Golda    schedule 28.02.2014    source источник
comment
У вас есть шаблон для этого? Я не вижу ни одного на этом.   -  person Soner Gönül    schedule 28.02.2014
comment
Нет. Как я могу добиться этого с помощью шаблона?   -  person Golda    schedule 28.02.2014
comment
Вы неправильно меня понимаете. Например; если ваш номер будет 987654321, ваш результат должен быть 987-65-4321 ? Вы хотите всегда разделять их как 3 digit - 2 digit - 4 digit?   -  person Soner Gönül    schedule 28.02.2014
comment
Да. Всегда 3 цифры - 2 цифры - 4 цифры   -  person Golda    schedule 28.02.2014


Ответы (3)


Используйте базовое числовое форматирование:

yourNumber.ToString("###-##-####");

Обновление:

Хорошо, если у вас уже есть это как строка, вы можете разделить ее и добавить дефисы:

var result = str.Substring(0,3) + "-" 
                + str.Substring(3,2) + "-" 
                + str.Substring(5);

... или, если подумать, возможно, String.Insert() проще:

// insert "-" after position 3, then after position 6 in the returned string.
result = str.Insert(3, "-").Insert(6, "-"); 
person Kjartan    schedule 28.02.2014
comment
Он показывает ошибку, потому что число уже является строкой. Лучшее совпадение перегруженного метода для «string.ToString (System.IFormatProvider)» имеет некоторые недопустимые аргументы. - person Golda; 28.02.2014

попробуй это...

Regex.Replace("987654321", @"(\d{3})(\d{2})(\d{4})", "$1-$2-$3");
person Amit Tiwari    schedule 28.02.2014

Просто вы можете использовать.

var outputString = yourString.Insert(3,"-").Insert(6,"-");

person Community    schedule 28.02.2014