如何将<i>和</i>之间的文本转换为斜体并使标签在richtextbox C#中消失

时间:2014-02-10 14:49:26

标签: c# .net formatting richtextbox italic

我在richtextbox中有这个文本: 你所赐予的人的道路&lt;我&gt;你&lt; / i&gt;祝福,那些没有发生过&lt;我&gt;你&lt; / i&gt;不满,以及那些没有误入歧途的人。 之间的任何内容都应变为斜体,标签不应出现。

我使用了这段代码:

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;

但是这段代码不起作用,我该怎么解决?

1 个答案:

答案 0 :(得分:1)

您最好使用正则表达式替换之前的文本,并将其放在RichTextBox中。但是,要使用代码,您可以使用此...

    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>", "") + " ";
    }