Feedback

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

Veröffentlicht von am 05.07.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 ...
Snippet in VB übersetzen
//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 05.07.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 06.07.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 06.07.2007:
Also wenn ich folgendes ausführe:
Console.WriteLine( System.Web.HttpUtility.HtmlEncode("äöüÄÖÜ"));


erhalte ich als ausgabe:
äöüÄÖÜ

Rüdiger Vossel schrieb am 06.07.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 06.07.2007:
Jetzt aber! *lol*
Nicht "HttpServerUtility" sondern "HttpUtility"
Jetzt versteh ich das auch *g*!!
 

Logge dich ein, um hier zu kommentieren!