Konwersja adresu MAC dowolnej postaci na postać xx:xx:xx:xx:xx:xx

Zagadnienie: Chcemy odpowiednio przekonwertowywać adres MAC by otrzymywać jednolitą formę xx:xx:xx:xx:xx:xx
Rozwiązanie: Przykład kodu realizującego powyższe. Metoda Add_MAC_TextBox_TextChanged wykonuje się przy wprowadzeniu znaków w TextBox o nazwie Add_MAC_TextBox. Rezultat zapisywany jest w Label o nazwie Converted_MAC_Label.

private void Add_MAC_TextBox_TextChanged(object sender, EventArgs e)
{
Converted_MAC_Label.Text = "";
for (int i = 0; i {
// Sprawdzenia czy mamy wprowadzanie znaki a-f, 0-9, :, -,
if ((Regex.IsMatch(Add_MAC_TextBox.Text[i].ToString(), "^[a-f-0-9]$", RegexOptions.IgnoreCase)) || (Regex.IsMatch(Add_MAC_TextBox.Text[i].ToString(), "^*:$", RegexOptions.IgnoreCase)))
{
// Zamiana znaku - na :
if (Regex.IsMatch(Add_MAC_TextBox.Text[i].ToString(), "-"))
{
Converted_MAC_Label.Text += ":";
}
else
{
// Dodawanie : co 2 znaki w przypadki wprowadzania hurtem znaków a-f oraz 0-9
if ( (i>1) && (i % 2 == 0) && (Regex.IsMatch(Add_MAC_TextBox.Text[i].ToString(), "[a-f0-9]$")) && (Regex.IsMatch(Add_MAC_TextBox.Text[i - 1].ToString(), "[a-f0-9]$")) && (Regex.IsMatch(Add_MAC_TextBox.Text[i - 2].ToString(), "[a-f0-9]")))
{
Converted_MAC_Label.Text += ":"+Add_MAC_TextBox.Text[i];
Converted_MAC_Label.Text = Converted_MAC_Label.Text.ToLower();
}
else
{
Converted_MAC_Label.Text += Add_MAC_TextBox.Text[i];
Converted_MAC_Label.Text = Converted_MAC_Label.Text.ToLower();
}
}
}
else
{
// Informacja o złej postaci adresu MAC podczas wprowadzania
MessageBox.Show("Błędny znak w adresie MAC","Błędny znak", MessageBoxButtons.OK, MessageBoxIcon.Error);
Add_MAC_TextBox.Text = Add_MAC_TextBox.Text.Substring(0, Add_MAC_TextBox.Text.Length - 1);
Add_MAC_TextBox.SelectionStart = Add_MAC_TextBox.Text.Length;
}
}
// Informacja i czyszczenie w przypadku zbyt długiej formy adresu MAC
if (Converted_MAC_Label.Text.Length > 17)
{
MessageBox.Show("Błędna postać adresu MAC", "Błędny MAC", MessageBoxButtons.OK, MessageBoxIcon.Error);
Converted_MAC_Label.Text = Converted_MAC_Label.Text.Substring(0, Converted_MAC_Label.Text.Length - 1);
Add_MAC_TextBox.Text = Add_MAC_TextBox.Text.Substring(0, Add_MAC_TextBox.Text.Length - 1);
Add_MAC_TextBox.SelectionStart = Add_MAC_TextBox.Text.Length;
}
// Sprawdzanie formy adresu MAC w przypadku, gdy mamy 17 znaków
if (Converted_MAC_Label.Text.Length == 17)
{
for (int i = 0; i {
if (i % 3 == 2)
{
if (Regex.IsMatch(Converted_MAC_Label.Text[i].ToString(), "^*:$", RegexOptions.IgnoreCase))
{
check = 1;
}
else
{
check = 0;
MessageBox.Show("Błędna postać adresu MAC", "Błędny MAC", MessageBoxButtons.OK, MessageBoxIcon.Error);
break;
}
}
if (i % 3 != 2)
{
if (Regex.IsMatch(Converted_MAC_Label.Text[i].ToString(), "[a-f0-9]$", RegexOptions.IgnoreCase))
{
check = 1;
}
else
{
check = 0;
MessageBox.Show("Błędna postać adresu MAC", "Błędny MAC", MessageBoxButtons.OK, MessageBoxIcon.Error);
break;
}
}
}
}
else
{
check = 0;
}
}

Tags: