Отформатировать номер телефона под шаблон c#
String tel_str = "0982468089";
Как из номера телефона 0982468089 сделать (098) 246-80-89
Возможно через Regex.Replace это делается, но не нахожу как
Ответы (1 шт):
Автор решения: Alexander Petrov
→ Ссылка
Давайте заморочимся и сделаем универсальную функцию, создающую форматтеры по задаваемому шаблону.
public static Func<string, string> CreateFormatter(string input, string pattern)
{
var charMap = new Dictionary<int, char>();
for (int i = 0; i < pattern.Length; i++)
{
if (!input.Contains(pattern[i]))
{
charMap.Add(i, pattern[i]);
}
}
Func<string, string> formatter = s =>
{
foreach (var kvp in charMap)
{
s = s.Insert(kvp.Key, kvp.Value.ToString());
}
return s;
};
return formatter;
}
Номер телефона, который вы представили, состоит из десяти символов. Поэтому на входе нашей функции - строка из десяти символов. Это необязательно цифры, могут быть любые символы.
Вторым параметром идёт шаблон. В нём присутствуют те же самые десять символов и любые другие символы, которые нужно добавить: скобки, пробел, тире и т. п.
Использование:
var formatter = CreateFormatter("1234567890", "(123) 456-78-90");
//var formatter = CreateFormatter("abcdefghij", "(abc) def-gh-ij");
string phone = "0982468089";
string result = formatter(phone);
Console.WriteLine(phone);
Console.WriteLine(result);