Добавление ‘-‘ к моей строке в C#

#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);