How can I convert text in between <i> and </i> to italics and make the tags disappear in richtextbox C#

StackOverflow https://stackoverflow.com/questions/21680306

سؤال

I have this text apearing in a richtextbox: The path of those on whom Thou hast bestowed < i >Thy< /i > blessings, those who have not incurred < i >Thy< /i > displeasure, and those who have not gone astray. Whatever is between and should turn into italics and the tags shouldn't appear.

I used this code:

richTextBox1.Select(richTextBox1.Text.IndexOf("</i>") + 1, richTextBox1.Text.IndexOf("<i>") - richTextBox1.Text.IndexOf("</i>") - 1);
Font italicFont = new Font("Cambira", 14, FontStyle.Italic);
richTextBox1.SelectionFont = italicFont;

But this code isn't working, how do I fix that?

لا يوجد حل صحيح

نصائح أخرى

You'd be better of using Regular Expressions to replace the text before you put it in the RichTextBox. However, to do it with code, you could use this...

    int token = -1;
    int token2 = -1;

    richTextBox1.Text = richTextBox1.Text.Replace(" <", "<");
    richTextBox1.Text = richTextBox1.Text.Replace("< ", "<");
    richTextBox1.Text = richTextBox1.Text.Replace(" >", ">");
    richTextBox1.Text = richTextBox1.Text.Replace("> ", ">");

    while (richTextBox1.Text.IndexOf("<i>") > -1)
    {
      token = richTextBox1.Text.IndexOf("<i>");
      token2 = richTextBox1.Text.IndexOf("</i>", token) + 4;
      string clip = richTextBox1.Text.Substring(token, token2 - token);

      Font italicFont = new Font("Cambira", 14, FontStyle.Italic);
      richTextBox1.Select(token, token2 - token);
      richTextBox1.SelectionFont = italicFont;
      richTextBox1.SelectedText = " " + clip.Replace("<i>", "").Replace("</i>", "") + " ";
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top