begin process at 2008 05 16 21:53:34
1 173 770 membres
577 nouveaux aujourd'hui
13 973 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

COQTEXTTOOLS : TRANSFORMATIONS TEXTE SIMPLE ET UTILISATION ANTIXSSLIBRARY


Information sur la source

Catégorie :Chaîne de caractères Source .NET ( DotNet ) Classé sous : antixsslibrary, clipboard, htmlencode, urlencode Niveau : Débutant Date de création : 30/04/2007 Date de mise à jour : 04/05/2008 18:01:37 Vu / téléchargé: 4 365 / 51

Note :
Aucune note

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note


Description

Voici une petite application sans grande prétention autre que fournir quelques "outils" de manipulation du texte contenu dans le presse papiers.
Le principal point d'intérêt du code en lui même réside dans la classe EncodeManager qui se charge d'effectuer les opérations sur le contenu du Clipboard, en utilisant au besoin les méthodes fournies par l'Anti-Cross Site Scripting Library (AntiXssLibrary v1.5 : http://www.microsoft.com/downloads/details.aspx?FamilyID=efb9c819-53ff-4f82-bfaf-e11625130c25&DisplayLang=en).

Vous trouverez une présentation plus détaillée de l'outil en lui même dans ce post sur mon blog : http://blogs.codes-sources.com/coq/archive/2007/04/30/coqtexttools-transformations-texte-simple-et-utilisation-antixsslibrary.aspx

Source

  • /// <summary>
  • /// Classe contenant les méthodes de traitement du contenu du Clipboard.
  • /// </summary>
  • class EncodeManager
  • {
  • const String BRTAG = "<br/>";
  • #region Accès au Clipboard
  • /// <summary>
  • /// Obtient le texte présent dans le Clipboard.
  • /// </summary>
  • /// <returns>Chaîne de caractères contenant le texte présent dans le Clipboard, ou une chaîne vide en cas d'erreur.</returns>
  • private static String GetClipboardText()
  • {
  • String text = String.Empty;
  • if (Clipboard.ContainsText())
  • {
  • try
  • {
  • text = Clipboard.GetText();
  • }
  • catch (Exception ex)
  • {
  • System.Diagnostics.Debug.WriteLine(ex.ToString());
  • text = String.Empty;
  • }
  • }
  • return text;
  • }
  • /// <summary>
  • /// Place le texte spécifié dans le Clipboard.
  • /// </summary>
  • /// <param name="text">Texte à placer dans le Clipboard.</param>
  • private static void SetClipboardText(String text)
  • {
  • try
  • {
  • Clipboard.SetText(text);
  • }
  • catch (Exception ex)
  • {
  • System.Diagnostics.Debug.WriteLine(ex.ToString());
  • }
  • }
  • #endregion Accès au Clipboard
  • #region Regex
  • /// <summary>
  • /// Regex pour le traitement des retours à la ligne.
  • /// </summary>
  • private static Regex regexNL = new Regex(
  • @"\r?\n",
  • RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled
  • );
  • /// <summary>
  • /// Regex pour le traitement des doubles retours à la ligne.
  • /// </summary>
  • private static Regex regexDoubleNL = new Regex(
  • @"(\r?\n)\1",
  • RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled
  • );
  • #endregion Regex
  • #region Méthodes ToText
  • /// <summary>
  • /// Convertit le contenu du Clipboard en texte simple.
  • /// </summary>
  • public static void ToText()
  • {
  • String text = EncodeManager.GetClipboardText();
  • if (text != null && text.Length > 0)
  • {
  • EncodeManager.SetClipboardText(text);
  • }
  • }
  • /// <summary>
  • /// Convertit le contenu du Clipboard en texte simple, avec suppression des retours à la ligne.
  • /// </summary>
  • public static void ToTextRemoveNL()
  • {
  • String text = EncodeManager.GetClipboardText();
  • if (text != null && text.Length > 0)
  • {
  • text = regexNL.Replace(text, String.Empty);
  • EncodeManager.SetClipboardText(text);
  • }
  • }
  • /// <summary>
  • /// Convertit le contenu du Clipboard en texte simple, avec remplacement des doubles retours à la ligne.
  • /// </summary>
  • public static void ToTextReplaceDoubleNL()
  • {
  • String text = EncodeManager.GetClipboardText();
  • if (text != null && text.Length > 0)
  • {
  • text = regexDoubleNL.Replace(text, "$1");
  • EncodeManager.SetClipboardText(text);
  • }
  • }
  • #endregion Méthodes ToText
  • #region Méthodes fournissant un encodage
  • /// <summary>
  • /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.HtmlAttributeEncode"/>.
  • /// </summary>
  • public static void HtmlAttributeEncode()
  • {
  • String text = EncodeManager.GetClipboardText();
  • if (text != null && text.Length > 0)
  • {
  • String encodedText = AntiXss.HtmlAttributeEncode(text);
  • EncodeManager.SetClipboardText(encodedText);
  • }
  • }
  • /// <summary>
  • /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.HtmlEncode"/>.
  • /// </summary>
  • public static void HtmlEncode()
  • {
  • String text = EncodeManager.GetClipboardText();
  • if (text != null && text.Length > 0)
  • {
  • String encodedText = AntiXss.HtmlEncode(text);
  • EncodeManager.SetClipboardText(encodedText);
  • }
  • }
  • /// <summary>
  • /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.HtmlEncode"/>, en conservant les sauts de ligne.
  • /// </summary>
  • public static void HtmlEncodeNL()
  • {
  • String text = EncodeManager.GetClipboardText();
  • if (text != null && text.Length > 0)
  • {
  • // traitement des lignes
  • StringBuilder encodedText = new StringBuilder();
  • using (StringReader textReader = new StringReader(text))
  • {
  • String currentLine = null;
  • while ((currentLine = textReader.ReadLine()) != null)
  • {
  • if (currentLine.Length > 0)
  • {
  • // si la chaîne n'est pas vide, encodage
  • encodedText.AppendLine(AntiXss.HtmlEncode(currentLine));
  • }
  • else
  • {
  • // sinon, simple ajout
  • encodedText.AppendLine();
  • }
  • }
  • }
  • EncodeManager.SetClipboardText(encodedText.ToString());
  • }
  • }
  • /// <summary>
  • /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.HtmlEncode"/>, en transformant les sauts de ligne en <BR/>.
  • /// </summary>
  • public static void HtmlEncodeBR()
  • {
  • String text = EncodeManager.GetClipboardText();
  • if (text != null && text.Length > 0)
  • {
  • // traitement des lignes
  • StringBuilder encodedText = new StringBuilder();
  • using (StringReader textReader = new StringReader(text))
  • {
  • String currentLine = null;
  • while ((currentLine = textReader.ReadLine()) != null)
  • {
  • if (currentLine.Length > 0)
  • {
  • // si la chaîne n'est pas vide, encodage
  • encodedText.Append(AntiXss.HtmlEncode(currentLine));
  • encodedText.Append(BRTAG);
  • }
  • else
  • {
  • // sinon, simple ajout
  • encodedText.Append(BRTAG);
  • }
  • }
  • }
  • EncodeManager.SetClipboardText(encodedText.ToString());
  • }
  • }
  • /// <summary>
  • /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.JavaScriptEncode"/>.
  • /// </summary>
  • public static void JavaScriptEncode()
  • {
  • String text = EncodeManager.GetClipboardText();
  • if (text != null && text.Length > 0)
  • {
  • String encodedText = AntiXss.JavaScriptEncode(text);
  • EncodeManager.SetClipboardText(encodedText);
  • }
  • }
  • /// <summary>
  • /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.UrlEncode"/>.
  • /// </summary>
  • public static void UrlEncode()
  • {
  • String text = EncodeManager.GetClipboardText();
  • if (text != null && text.Length > 0)
  • {
  • String encodedText = AntiXss.UrlEncode(text);
  • EncodeManager.SetClipboardText(encodedText);
  • }
  • }
  • /// <summary>
  • /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.VisualBasicScriptEncode"/>.
  • /// </summary>
  • public static void VisualBasicScriptEncode()
  • {
  • String text = EncodeManager.GetClipboardText();
  • if (text != null && text.Length > 0)
  • {
  • String encodedText = AntiXss.VisualBasicScriptEncode(text);
  • EncodeManager.SetClipboardText(encodedText);
  • }
  • }
  • /// <summary>
  • /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.XmlAttributeEncode"/>.
  • /// </summary>
  • public static void XmlAttributeEncode()
  • {
  • String text = EncodeManager.GetClipboardText();
  • if (text != null && text.Length > 0)
  • {
  • String encodedText = AntiXss.XmlAttributeEncode(text);
  • EncodeManager.SetClipboardText(encodedText);
  • }
  • }
  • /// <summary>
  • /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.XmlEncode"/>.
  • /// </summary>
  • public static void XmlEncode()
  • {
  • String text = EncodeManager.GetClipboardText();
  • if (text != null && text.Length > 0)
  • {
  • String encodedText = AntiXss.XmlEncode(text);
  • EncodeManager.SetClipboardText(encodedText);
  • }
  • }
  • #endregion Méthodes fournissant un encodage
  • }
/// <summary>
/// Classe contenant les méthodes de traitement du contenu du Clipboard.
/// </summary>
class EncodeManager
{
    const String BRTAG = "<br/>";

    #region Accès au Clipboard

    /// <summary>
    /// Obtient le texte présent dans le Clipboard.
    /// </summary>
    /// <returns>Chaîne de caractères contenant le texte présent dans le Clipboard, ou une chaîne vide en cas d'erreur.</returns>
    private static String GetClipboardText()
    {
        String text = String.Empty;

        if (Clipboard.ContainsText())
        {
            try
            {
                text = Clipboard.GetText();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.ToString());
                text = String.Empty;
            }
        }

        return text;
    }

    /// <summary>
    /// Place le texte spécifié dans le Clipboard.
    /// </summary>
    /// <param name="text">Texte à placer dans le Clipboard.</param>
    private static void SetClipboardText(String text)
    {
        try
        {
            Clipboard.SetText(text);
        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.WriteLine(ex.ToString());
        }
    }

    #endregion Accès au Clipboard

    #region Regex

    /// <summary>
    /// Regex pour le traitement des retours à la ligne.
    /// </summary>
    private static Regex regexNL = new Regex(
        @"\r?\n", 
        RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled
        );

    /// <summary>
    /// Regex pour le traitement des doubles retours à la ligne.
    /// </summary>
    private static Regex regexDoubleNL = new Regex(
        @"(\r?\n)\1",
        RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled
        );

    #endregion Regex

    #region Méthodes ToText

    /// <summary>
    /// Convertit le contenu du Clipboard en texte simple.
    /// </summary>
    public static void ToText()
    {
        String text = EncodeManager.GetClipboardText();

        if (text != null && text.Length > 0)
        {
            EncodeManager.SetClipboardText(text);
        }
    }

    /// <summary>
    /// Convertit le contenu du Clipboard en texte simple, avec suppression des retours à la ligne.
    /// </summary>
    public static void ToTextRemoveNL()
    {
        String text = EncodeManager.GetClipboardText();

        if (text != null && text.Length > 0)
        {
            text = regexNL.Replace(text, String.Empty);
            EncodeManager.SetClipboardText(text);
        }
    }

    /// <summary>
    /// Convertit le contenu du Clipboard en texte simple, avec remplacement des doubles retours à la ligne.
    /// </summary>
    public static void ToTextReplaceDoubleNL()
    {
        String text = EncodeManager.GetClipboardText();

        if (text != null && text.Length > 0)
        {
            text = regexDoubleNL.Replace(text, "$1");
            EncodeManager.SetClipboardText(text);
        }
    }

    #endregion Méthodes ToText

    #region Méthodes fournissant un encodage

    /// <summary>
    /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.HtmlAttributeEncode"/>.
    /// </summary>
    public static void HtmlAttributeEncode()
    {
        String text = EncodeManager.GetClipboardText();

        if (text != null && text.Length > 0)
        {
            String encodedText = AntiXss.HtmlAttributeEncode(text);
            EncodeManager.SetClipboardText(encodedText);
        }
    }

    /// <summary>
    /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.HtmlEncode"/>.
    /// </summary>
    public static void HtmlEncode()
    {
        String text = EncodeManager.GetClipboardText();

        if (text != null && text.Length > 0)
        {
            String encodedText = AntiXss.HtmlEncode(text);
            EncodeManager.SetClipboardText(encodedText);
        }
    }

    /// <summary>
    /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.HtmlEncode"/>, en conservant les sauts de ligne.
    /// </summary>
    public static void HtmlEncodeNL()
    {
        String text = EncodeManager.GetClipboardText();

        if (text != null && text.Length > 0)
        {
            // traitement des lignes
            StringBuilder encodedText = new StringBuilder();
            using (StringReader textReader = new StringReader(text))
            {
                String currentLine = null;
                while ((currentLine = textReader.ReadLine()) != null)
                {
                    if (currentLine.Length > 0)
                    {
                        // si la chaîne n'est pas vide, encodage
                        encodedText.AppendLine(AntiXss.HtmlEncode(currentLine));
                    }
                    else
                    {
                        // sinon, simple ajout
                        encodedText.AppendLine();
                    }
                }
            }
            EncodeManager.SetClipboardText(encodedText.ToString());
        }
    }

    /// <summary>
    /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.HtmlEncode"/>, en transformant les sauts de ligne en <BR/>.
    /// </summary>
    public static void HtmlEncodeBR()
    {
        String text = EncodeManager.GetClipboardText();

        if (text != null && text.Length > 0)
        {
            // traitement des lignes
            StringBuilder encodedText = new StringBuilder();
            using (StringReader textReader = new StringReader(text))
            {
                String currentLine = null;
                while ((currentLine = textReader.ReadLine()) != null)
                {
                    if (currentLine.Length > 0)
                    {
                        // si la chaîne n'est pas vide, encodage
                        encodedText.Append(AntiXss.HtmlEncode(currentLine));
                        encodedText.Append(BRTAG);
                    }
                    else
                    {
                        // sinon, simple ajout
                        encodedText.Append(BRTAG);
                    }
                }
            }
            EncodeManager.SetClipboardText(encodedText.ToString());
        }
    }

    /// <summary>
    /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.JavaScriptEncode"/>.
    /// </summary>
    public static void JavaScriptEncode()
    {
        String text = EncodeManager.GetClipboardText();

        if (text != null && text.Length > 0)
        {
            String encodedText = AntiXss.JavaScriptEncode(text);
            EncodeManager.SetClipboardText(encodedText);
        }
    }

    /// <summary>
    /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.UrlEncode"/>.
    /// </summary>
    public static void UrlEncode()
    {
        String text = EncodeManager.GetClipboardText();

        if (text != null && text.Length > 0)
        {
            String encodedText = AntiXss.UrlEncode(text);
            EncodeManager.SetClipboardText(encodedText);
        }
    }

    /// <summary>
    /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.VisualBasicScriptEncode"/>.
    /// </summary>
    public static void VisualBasicScriptEncode()
    {
        String text = EncodeManager.GetClipboardText();

        if (text != null && text.Length > 0)
        {
            String encodedText = AntiXss.VisualBasicScriptEncode(text);
            EncodeManager.SetClipboardText(encodedText);
        }
    }

    /// <summary>
    /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.XmlAttributeEncode"/>.
    /// </summary>
    public static void XmlAttributeEncode()
    {
        String text = EncodeManager.GetClipboardText();

        if (text != null && text.Length > 0)
        {
            String encodedText = AntiXss.XmlAttributeEncode(text);
            EncodeManager.SetClipboardText(encodedText);
        }
    }

    /// <summary>
    /// Convertit le contenu du Clipboard en texte simple, et l'encode à l'aide de <see cref="AntiXss.XmlEncode"/>.
    /// </summary>
    public static void XmlEncode()
    {
        String text = EncodeManager.GetClipboardText();

        if (text != null && text.Length > 0)
        {
            String encodedText = AntiXss.XmlEncode(text);
            EncodeManager.SetClipboardText(encodedText);
        }
    }

    #endregion Méthodes fournissant un encodage
}
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

30 avril 2007 23:22:13 :
Changement de <BR/> en <br/>, pour faire plaisir à Cyril ;-)
04 mai 2008 18:01:38 :
Correction mineure (faute d'orthographe).
  • signaler à un administrateur
    Commentaire de coq le 30/04/2007 22:45:16 administrateur CS

    Et merci à Seb (sebmafate) pour son coup de main sur la Regex :-D

  • signaler à un administrateur
    Commentaire de sebmafate le 01/05/2007 09:36:54 administrateur CS

    Mais de rien... faut profiter que je sois en ligne ;)

  • signaler à un administrateur
    Commentaire de romagny13 le 01/05/2007 10:40:06

    Bien sympathique cette Coqtexttools
    je reste impressioné par la qualité du code même pour une petite application comme cela
    il aurait été possible de faire un encodage rtf ?

  • signaler à un administrateur
    Commentaire de coq le 01/05/2007 10:43:57 administrateur CS

    Sans doute, mais je n'ai pas trop le temps de me plonger sur la manipulation de ce format.
    J'ai fait cette petite appli un peu dans l'urgence vu que j'en avait besoin ^^

  • signaler à un administrateur
    Commentaire de sebmafate le 01/05/2007 10:48:32 administrateur CS

    je vais voir pour te faire une extension rtf...
    Quant à la qualité... ce n'est pas parce que c'est une petite appli qu'il faut la bacler ;)

  • signaler à un administrateur
    Commentaire de coq le 01/05/2007 10:54:20 administrateur CS

    Voui, toujours penser à la phase de maintenance :-D

Ajouter un commentaire

Appels d'offres

Pub



Snippets en rapport

CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Boutique

Boutique de goodies CodeS-SourceS