Member 14672509 Ответов: 2

Как замаскировать номер телефона в списке в C#, WPF


У меня есть одно текстовое поле для добавления номера телефона в список. Значение Listbox будет сохранено в XML-файле. для маскировки номера телефона Im использует следующий код :

Мне нужно вот так : пользователь вводит номер телефона -> 9876543210 и нажимает кнопку Добавить номер будет отображаться в списке примерно в таком формате-> XXXXXXX210.
после этого пользователь нажимает на кнопку Отправить элементы списка(исходное значение 9876543210), которые будут сохранены в xml-файле.

Спасибо,

Что я уже пробовал:

string Phone = this.Textbox1.Text;
       string MaskedPhone = string.Format("XXXXXXX{0}", Phone.Trim().Substring(7, 3));
       ListBox1.Items.Add(Country_Code + "-" + MaskedPhone);

  this code masked Xml value too, I need Only ListBox Value should be Masked, Xml value should be as it is.

How can I do it in C# ??

2 Ответов

Рейтинг:
2

Richard MacCutchan

Вы можете либо создать свой собственный тип объекта, чтобы добавить его в Списка.ObjectCollection Класса (Система.Окна.Формы) | Microsoft Docs[^], или используйте пользовательский чертеж для отображения числа в нужном формате.


Maciej Los

5ed!

Рейтинг:
2

Maciej Los

В дополнение к решению №1 от RichardMacCutchan, вы должны создать свой собственный класс, например:

public class MaskedPhone
{
	private readonly string countrycode = string.Empty;
	private readonly string phoneno = string.Empty;
	
	public MaskedPhone(string _countrycode, string _phoneno)
	{
		countrycode = _countrycode;
		phoneno = _phoneno;
	}


	public string CountryCode => countrycode;
	public string PhoneNo => phoneno;
	
	public override string ToString()
	{
		return string.Format("{0}-XXXXXXX{1}", countrycode, phoneno.Substring(7, 3));
	}
}


Примечание: Используйте правильные типы данных! Я использовал строковый тип данных.

Использование:
List<MaskedPhone> mps = new List<MaskedPhone>()
    {
        new MaskedPhone("+48", "1234567890"),
        new MaskedPhone("+46", "0123456789"),
        new MaskedPhone("+42", "6549873210"),
    };
foreach(MaskedPhone mp in mps)
{
    Console.WriteLine($"{mp.ToString()} => {mp.CountryCode}-{mp.PhoneNo}");
}


Richard MacCutchan

+5 за полный ответ.

Maciej Los

Большое спасибо, Ричард.