IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

6. diel - Konverter, práca s textom - isim

Je tiež veľmi nápomocná trieda Converter, ktorá obsahuje metódy napríklad GetContactName / ID / Avatar atď. Ktoré rozpoznajú daný parameter a nájdu v ňom požadovanú informáciu a vráti ju. Čo veľmi uľahčí prácu, tam, kde sa objavujú objekty rôznych druhov. Avšak napríklad v triedach pre prácu s knižnicou Skype, kde viem, čo chcem použiť a nepletie sa to, môžem pokojne písať hneď čo potrebujem.

Len ľahký prikládok:

public static class Converter
{
    public static Availability GetContactAvailability(object contact)
    {
        if (contact is SktContact)
        {
            switch ((contact as SktContact).P_AVAILABILITY)
            {
                case SktContact.AVAILABILITY.NOT_AVAILABLE:
                case SktContact.AVAILABILITY.NOT_AVAILABLE_FROM_MOBILE:
                case SktContact.AVAILABILITY.AWAY_FROM_MOBILE:
                case SktContact.AVAILABILITY.AWAY:
                    return Availability.Away;

                ...

                default:
                    return Availability.Invisible;
            }
        }

        if (contact is PresenceType)
        {
            switch ((PresenceType)contact)
            {
                case PresenceType.available:
                    return Availability.Online;

                ...
            }
        }

        if (contact is IcqSharp.Base.Status)
        {
            switch ((IcqSharp.Base.Status)contact)
            {
                case IcqSharp.Base.Status.Online:
                case IcqSharp.Base.Status.FreeForChat:
                    return Availability.Online;

                ....
            }
        }

        return Availability.Offline;
    }
}

Potom tiež používam triedu TextEdit, ktorá zabezpečuje prácu s textom. Pridáva rozšírenie napríklad Split ktorá sa využíva pri SMS a Facebooku, kde je potrebné správu rozdeliť, ak má viac znakov, než je možné poslať. Alebo odstránenie XML tagov, ktoré posiela Skype, smajlíci ai.

Zase vypíšem len to zaujímavé a popíšem čo to robí.

public static class TextEdit
{

Ak dám kľúčové slovko this pred dátový typ parametra, urobím si pre neho rozšírenie. Takže teraz môžem napísať -> "niečo" .SplitString (2). Je nutné mať takú metódu v nevnořené triede.

public static IEnumerable<string> SplitString(this string input, int outputStringLength)
{
    var count = 0;
    while (count < input.Length)
    {
        var length = Math.Min(outputStringLength, input.Length - count);
        yield return string.Format("{0}", input.Substring(count, length));
        count += outputStringLength;
    }
}

public static string RemoveDiacritics(this string inputString)
{
    String normalizedString = inputString.Normalize(NormalizationForm.FormD);
    StringBuilder stringBuilder = new StringBuilder();
    for (int i = 0; i < normalizedString.Length; i++)
    {
        Char c = normalizedString[i];
        if (System.Globalization.CharUnicodeInfo.GetUnicodeCategory(c) != System.Globalization.UnicodeCategory.NonSpacingMark)
            stringBuilder.Append(c);
    }
    return stringBuilder.ToString();
}
/// <summary>
/// Smaže neplatné znaky - používá se pro zápis do souboru, aby neobsahoval neplatné znaky
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public static string RemoveInvalidCharactersFromFileName(string fileName)
{
    if ((fileName.Length > 0) && (fileName.Substring(0, 1) == "-"))
        fileName = fileName.Substring(1);
    return Strip(fileName, "\\", "/", ":", "*", "?", "\"", "<", ">", "|");
}

private static string Strip(string input, params string[] removals)
{
    foreach (string removal in removals)
    {
        input = input.Replace(removal, "");
    }

    return input;
}

Dy ma štvalo, ako skracovali názov a pridávali ... bodky ... do slov ako napríklat ... kde bolo zrejmé, že stačí jedno dve pímenka aby to slovo skončilo a tie bodky mu to skazily. Preto tam je to + 3.

/// <summary>
/// ZKrátí text na danou délku
/// </summary>
/// <param name="text"></param>
/// <param name="length"></param>
/// <returns></returns>
public static string SortText(this string text, int length)
{
    if (text.Length > length + 3)
        return text.Substring(0, length) + "...";
    return text;
}

Toto mi všade tvrdili, že nejde a že treba strašne veľa externých knižníc. Ale ja im neveril ... Používa sa u Skype, ktorý posiela správy v XML. Odporúčam zhliadnuť je to niečo ako <ss type = "smile">: -) </ ss>

/// <summary>
/// Smaže html tagy
/// </summary>
/// <param name="text">Text</param>
/// <returns>Text bez html tagů</returns>
public static string StripHtmlTags(string text)
{
    return System.Text.RegularExpressions.Regex.Replace(text, "<.*?>", string.Empty);
}

/// <summary>
/// Dekóduje html entity
/// </summary>
/// <param name="text">Text</param>
/// <returns>Text s dekódovanýma entitama</returns>
public static string DecodeHtmlEntities(string text)
{
    // dekóduje základní entity
    string decodedText = System.Web.HttpUtility.HtmlDecode(text);

    // přidání speciálních entit, které to nedekóduje
    Dictionary<string, string> entityExtended = new Dictionary<string, string>();
    entityExtended.Add("&apos;", "'");

    foreach (var entity in entityExtended)
        decodedText = decodedText.Replace(entity.Key, entity.Value);

    return decodedText;
}

 

Predchádzajúci článok
Prístup k okýnkům, mutex, fce messengera - isim
Všetky články v sekcii
Programujeme vlastné Instant Messenger :: isim ::
Preskočiť článok
(neodporúčame)
Konvert obrázkov smajlíkov do RTF, Safe Lock - isim
Článok pre vás napísal David Jančík
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor je vášnivý programátor. Nezná slovo "nelze", nebojí se zkoušet nepoznané a pronikat do nových technologií.
Aktivity