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é: 6 480 / 78

Note :
Aucune note

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


Description

Cliquez pour voir la capture en taille normale
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
}

Fichier Zip

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

Historique

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).

Commentaires et avis

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

Discussions en rapport avec ce code source dans le forum

Clipboard ac Fichier Bitmap [ par Lordvb ] je voudrais faire une application pour faire mes imprimes ecran. le pb est lorseque je veux previsualiser mon imprime ecran dans une picture box je bl Utiliser Clipboard en mode console [ par MaxSoldier ] Bonjours, je code en C#.Net et je voudrais utiliser la class Clipboard afinde pouvoir mettre du texte dans le presse papier. Mais je ne peut utiliser Tableau récupéré dans le clipboard... [ par nerix27 ] Bonjour,ça fait une semaine que je scrute toute la toile pour trouver réponse à mon problème, sans succès...Dans mon clipboard se trouve un tableau de press papier (clipboard) [ par uzu ] bonjourquelq'un peut me dir comment on utilise le clipboard dans un simple editeur, pour faire copy, cut et past ;pu un exemple qui existe sur le net. clipboard office [ par winny68 ] Bonjour,j'ai cherché sur le site une solution à mon problème mais je n'ai rien trouvé.Je voudrai copier un fichier, se trouvant dans un fichier Word, [Winform] Copier-Coller sans formatage [ par virgul ] Bonjour,Voila j'aimerais bien pouvoir supprimer le formattage dans mon clipboard (copier-coller) lorsque je copie dans un Richtextbox.Car je mets moi Problème HtmlEncode [ par math289 ] Bonjour, Je suis en train de développer un petit programme dans lequel j'utilise la méthode HtmlEncode de la classe HttpUtility pour convertir les ca interdir insertion detailsview + htmlencode [ par AnoTreL ] Bonjour, j'ai crée un DetailsView qui est donc relié à un sqldatasource. avec ce DetailsView je peux soit afficher ce qu'il y a dans la BDD ou alors i Comment utiliser le clipboard (presse-papier) ? [ par godvicien ] Salut à tous.J'ai trouver plein d'exemple pour copier coller du text ou une image, mais peut-on copier dans le clipboard toute une class ?- Ctrl-C : j sendkeys clipboard word [ par micam ] <link rel="Fi


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,515 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.