2009-02-09 5 views
1

Je suis en train de me battre la tête contre un mur en essayant de comprendre cela. Mais pour faire court, je voudrais convertir une chaîne entre 2 UTF-8 '\ u0002' en format gras. C'est pour un client IRC sur lequel je travaille donc j'ai beaucoup couru dedans. J'ai trébuché regex et j'ai trouvé que la correspondance sur le rtf ((\ '02) fonctionne pour l'attraper, mais je ne suis pas sûr comment faire correspondre le dernier caractère et le changer en \ bclear ou quoi que soit le formatage rtf.Le moyen le plus simple de formater rtf/unicode/utf-8 dans un RichTextBox?

Je ne peux pas coller exactement le texte que je suis en train d'analyser parce que les personnages sont filtrés sur le poteau. Mais quand on regarde la valeur char son int de 2.

Voici une tentative de coller le texte incriminé:

[02:34] test test

+0

collez les caractères et formatez-les en tant qu'échantillon de code –

+0

J'ai essayé cela, il les formate n'importe quoi. –

Répondre

1

Vous pouvez utiliser soit

rtb.Rtf = Regex.Replace(rtb.Rtf, @"\\'02\s*(.*?)\s*\\'02", @"\b $1 \b0"); 

ou

rtb.Rtf = Regex.Replace(rtb.Rtf, @"\\'02\s*(.*?)\s*\\'02", @"\'02 \b $1 \b0 \'02"); 

selon que vous voulez garder les \ u0002s là-dedans.

Les fonctions \ b et \ b0 activent et désactivent le gras dans le format RTF.

+0

Merci beaucoup ... cela a fonctionné! –

0

Je n'ai pas de cas de test, mais vous pouvez également utiliser le Clipboard de la classe GetText method avec le Unicode TextDataFormat. Fondamentalement, je pense que vous pouvez placer l'entrée dans le presse-papiers et le sortir dans un format différent (fonctionne pour RTF et autres). Voici le code de démonstration de MS (non applicable directement, mais démontre l'API):

// Demonstrates SetText, ContainsText, and GetText. 
public String SwapClipboardHtmlText(String replacementHtmlText) 
{ 
    String returnHtmlText = null; 
    if (Clipboard.ContainsText(TextDataFormat.Html)) 
    { 
     returnHtmlText = Clipboard.GetText(TextDataFormat.Html); 
     Clipboard.SetText(replacementHtmlText, TextDataFormat.Html); 
    } 
    return returnHtmlText; 
} 

Bien sûr, si vous faites cela, vous voulez probablement sauver et restaurer ce qui était dans le presse-papiers, ou bien vous pouvez déranger vos utilisateurs !

Questions connexes