Az e-mail cím létrehozásakor szabtunk néhány feltételt, melyeket be kell tartania a címnek. Ezek a következők:
- Nem tartalmazhat nagybetűs karaktereket
- Nem tartalmazhat ékezetes karaktereket
- Nem tartalmazhat szimbólumokat, csupán pontot
- A megadott domain névtől egy „@” karakter válassza el.
A feltételek meghatározása után lássunk is neki.
Annak érdekében, hogy a cím ne tartalmazzon ékezetes karaktereket, létrehoztunk két karakterláncot, mely sorban tartalmazza a nem megengedett kisbetűs, és nagybetűs ékezetes karaktereket.
private string invalids = "áéíóöőúüűÁÉÍÓÖŐÚÜŰ";
Az egyszerűség kedvéért úgy jártunk el, hogy létrehoztunk egy másik karakterláncot is a fenti karaktereket helyettesítő karakterekből, így amikor a megadott név karaktereit ellenőrizzük, egyszerűen csak kicseréljük a név szabálytalan karaktereit az adott pozícióban található szabályos karakterrel.
private string valids = "aeiooouuuaeiooouuu";
A függvény, amely elvégzi az e-mail cím generálását, az EmailFromName nevet viseli, és két paramétert vár: a név, és a domain név karakterláncait.
private string EmailFromName(string name, string domain)
{
string email = "";
...
A megadott névből induláskor levágjuk az esetlegesen határoló szóközöket, és elkezdjük a karakterek ellenőrzését:
name = name.Trim();
for(int i=0;i<name.Length;i++)
{
A megadott név adott pozícióban található karakterét csak akkor ellenőrizzük, ha a karakter számjegy, nagybetűs, vagy kisbetűs karakter:
if (Char.IsDigit(name[i]) || Char.IsLower(name[i]) || Char.IsUpper(name[i]))
{
Ekkor megvizsgáljuk, hogy tartalmaz-e szabálytalan, a fenti karakterláncban található elemet:
pos = invalids.IndexOf(name[i]);
Ha nem, akkor egyszerűen felfűzzük a visszaadandó karakterláncra úgy, hogy mindenképpen kisbetűs legyen:
if (pos == -1)
{
email += Char.ToLower(name[i]);
}
Ha szabálytalan karaktert tartalmaz, akkor helyette a szabályos karakterek láncának azonos pozícióban található elemét fűzzük fel a kimeneti láncba:
else
{
email += valids[pos];
}
}
Ha a karakter szóköz, akkor egy pont (’.’) karaktert fűzünk a láncba:
else
{
if (name[i] == ' ')
{
email += ".";
}
}
}
Majd hozzácsapjuk a lánc végére a domain nevet egy ’@’ (at) karakterrel elválasztva a kapott névtől:
email += "@" + domain;
return email;
}