#c#
#c#
Вопрос:
У меня есть строка в виде «123456789». При отображении ее на экране я хочу показать ее как 123-456-789. Пожалуйста, позвольте мне узнать, как добавить «-» для каждых 3 чисел. Заранее спасибо.
Комментарии:
1. это всегда 9 цифр или оно может быть неограниченным?
Ответ №1:
Вы можете использовать string.Substring
:
s = s.Substring(0, 3) "-" s.Substring(3, 3) "-" s.Substring(6, 3);
или регулярное выражение (ideone):
s = Regex.Replace(s, @"d{3}(?=d)", "$0-");
Ответ №2:
Я продолжу и предоставлю решение на Regex
основе:
string rawNumber = "123456789";
var formattedNumber = Regex.Replace(rawNumber, @"(d{3}(?!$))", "$1-");
Это регулярное выражение разбивается следующим образом:
( // Group the whole pattern so we can get its value in the call to Regex.Replace()
d // This is a digit
{3} // match the previous pattern 3 times
(?!$) // This weird looking thing means "match anywhere EXCEPT the end of the string"
)
"$1-"
Строка замены означает, что всякий раз, когда найдено соответствие приведенному выше шаблону, заменяйте его на то же самое (часть в 1 доллар), за которой следует -
. Таким образом, в "123456789"
это будет соответствовать 123
и 456
, но не 789
потому что это в конце строки. Затем он заменяет их на 123-
и 456-
, выдавая конечный результат 123-456-789
.
Ответ №3:
Вы также можете использовать цикл for, если длина строки не ограничена 9 цифрами, следующим образом
string textnumber = "123456789"; // textnumber = "123456789012346" also it will work
string finaltext = textnumber[0] "";
for (int i = 1; i < textnumber.Length; i )
{
if ((i 1) % 3 == 0)
{
finaltext = finaltext textnumber[i] "-";
}
else
{
finaltext = finaltext textnumber[i];
}
}
finaltext = finaltext.Remove(finaltext.Length - 1);