Feedback

C# - Austauch von kritischen Zeichen in einem String...

Veröffentlicht von am 7/5/2007
(2 Bewertungen)
Diese Klasse tauscht Umlaute und andere kritische Zeichen in die entsprechenden Entitäten (HTML/XML- save) aus.
Beispiel:
aus ä wird &Auml

Man kann Diese Klasse natürlich für beliebige Austauschoperationen nutzen ...
//Folgende Using Statements müssen sein :-)
using System;
using System.Collections.Generic;
using System.Text;

/// <summary>
    /// Klasse zur Bereinigung von Strings
    /// Kritische Chars werden gegen die entsprechende Entität ausgetauscht
    /// </summary>
class HTMLCharacterConverter
    {
        private Dictionary<char, string> criticals = new Dictionary<char, string>();

        public HTMLCharacterConverter()
        {
            criticals.Add('"', "&quot;");
            criticals.Add('>', "&lt;");
            criticals.Add('<', "&gt;");
            criticals.Add('¡', "&iexcl;");
            criticals.Add('¢', "&cent;");
            criticals.Add('£', "&pound;");
            criticals.Add('¤', "&curren;");
            criticals.Add('¥', "&yen;");
            criticals.Add('¦', "&brvbar;");
            criticals.Add('§', "&sect;");
            criticals.Add('¨', "&uml;");
            criticals.Add('©', "&copy;");
            criticals.Add('ª', "&ordf;");
            criticals.Add('«', "&laquo;");
            criticals.Add('¬', "&not;");
            criticals.Add('­', "&shy;");
            criticals.Add('®', "&reg;");
            criticals.Add('¯', "&macr;");
            criticals.Add('°', "&deg;");
            criticals.Add('±', "&plusmn;");
            criticals.Add('²', "&sup2;");
            criticals.Add('³', "&sup3;");
            criticals.Add('´', "&acute;");
            criticals.Add('µ', "&micro;");
            criticals.Add('¶', "&para;");
            criticals.Add('·', "&middot;");
            criticals.Add('¸', "&cedil;");
            criticals.Add('¹', "&sup1;");
            criticals.Add('º', "&ordm;");
            criticals.Add('»', "&raquo;");
            criticals.Add('¼', "&frac14;");
            criticals.Add('½', "&frac12;");
            criticals.Add('¾', "&frac34;");
            criticals.Add('¿', "&iquest;");
            criticals.Add('À', "&Agrave;");
            criticals.Add('Á', "&Aacute;");
            criticals.Add('Â', "&Acirc;");
            criticals.Add('Ã', "&Atilde;");
            criticals.Add('Ä', "&Auml;");
            criticals.Add('Å', "&Aring;");
            criticals.Add('Æ', "&AElig;");
            criticals.Add('Ç', "&Ccedil;");
            criticals.Add('È', "&Egrave;");
            criticals.Add('É', "&Eacute;");
            criticals.Add('Ê', "&Ecirc;");
            criticals.Add('Ë', "&Euml;");
            criticals.Add('Ì', "&Igrave;");
            criticals.Add('Í', "&Iacute;");
            criticals.Add('Î', "&Icirc;");
            criticals.Add('Ï', "&Iuml;");
            criticals.Add('Ð', "&ETH;");
            criticals.Add('Ñ', "&Ntilde;");
            criticals.Add('Ò', "&Ograve;");
            criticals.Add('Ó', "&Oacute;");
            criticals.Add('Ô', "&Ocirc;");
            criticals.Add('Õ', "&Otilde;");
            criticals.Add('Ö', "&Ouml;");
            criticals.Add('×', "&times;");
            criticals.Add('Ø', "&Oslash;");
            criticals.Add('Ù', "&Ugrave;");
            criticals.Add('Ú', "&Uacute;");
            criticals.Add('Û', "&Ucirc;");
            criticals.Add('Ü', "&Uuml;");
            criticals.Add('Ý', "&Yacute;");
            criticals.Add('Þ', "&THORN;");
            criticals.Add('ß', "&szlig;");
            criticals.Add('à', "&agrave;");
            criticals.Add('á', "&aacute;");
            criticals.Add('â', "&acirc;");
            criticals.Add('ã', "&atilde;");
            criticals.Add('ä', "&auml;");
            criticals.Add('å', "&aring;");
            criticals.Add('æ', "&aelig;");
            criticals.Add('ç', "&ccedil;");
            criticals.Add('è', "&egrave;");
            criticals.Add('é', "&eacute;");
            criticals.Add('ê', "&ecirc;");
            criticals.Add('ë', "&euml;");
            criticals.Add('ì', "&igrave;");
            criticals.Add('í', "&iacute;");
            criticals.Add('î', "&icirc;");
            criticals.Add('ï', "&iuml;");
            criticals.Add('ð', "&eth;");
            criticals.Add('ñ', "&ntilde;");
            criticals.Add('ò', "&ograve;");
            criticals.Add('ó', "&oacute;");
            criticals.Add('ô', "&ocirc;");
            criticals.Add('õ', "&otilde;");
            criticals.Add('ö', "&ouml;");
            criticals.Add('÷', "&divide;");
            criticals.Add('ø', "&oslash;");
            criticals.Add('ù', "&ugrave;");
            criticals.Add('ú', "&uacute;");
            criticals.Add('û', "&ucirc;");
            criticals.Add('ü', "&uuml;");
            criticals.Add('ý', "&yacute;");
            criticals.Add('þ', "&thorn;");
            criticals.Add('ÿ', "&yuml;");
        }

        /**
         * Bereinigt einen übergebene String und tauscht die kritischen
         * Zeichen aus.
         */
        public String Purge(String text)
        {
            StringBuilder htmlk = new StringBuilder();
            int ia = 0;
            for (int i = 0; i < text.Length; i++)
            {
                Char c = text[i];
                if (criticals.ContainsKey(c))
                {
                    htmlk.Append(text.Substring(ia, i-ia));
                    htmlk.Append(criticals[c]);
                    ia = i + 1;
                }
            }
            htmlk.Append(text.Substring(ia));
            return htmlk.ToString();
        }
    }
Abgelegt unter Umlaut, Umlaute, Entität, String, HTML, XML.

5 Kommentare zum Snippet

FZelle schrieb am 7/5/2007:
Wozu?
In der auch von Windowsforms Anwendungen erreichbaren Klasse
System.Web.HttpServerUtility gibt es duch schon fertig die Routinen
HTMLEncode/Decode!
Rüdiger Vossel schrieb am 7/6/2007:
Schon, aber wenn ich die Aufbereitung für eine XML-Datei, die ich einfach auf Platte speichern will, nutze ist das Ergebnis des HttpServerUtility nicht brauchbar ...
Oder??? Ich meine aus "ä" macht das Ding "Pw2" ..
Vielleicht liege ich hier auch komplett falsch aber auf dem ersten Blick sieht das seltsam aus.
FZelle schrieb am 7/6/2007:
Also wenn ich folgendes ausführe:
Console.WriteLine( System.Web.HttpUtility.HtmlEncode("äöüÄÖÜ"));


erhalte ich als ausgabe:
&#228;&#246;&#252;&#196;&#214;&#220;

Rüdiger Vossel schrieb am 7/6/2007:
Stimmt!
Ich hab die falsche Funktion benutzt ... Argh wie peinlich :-)
Ok dann macht das Ding da oben nur Sinn wenn man was anderes Austauschen will .. was auch immer *lol*

THANKS!!!
Rüdiger Vossel schrieb am 7/6/2007:
Jetzt aber! *lol*
Nicht "HttpServerUtility" sondern "HttpUtility"
Jetzt versteh ich das auch *g*!!
 

Logge dich ein, um hier zu kommentieren!