1

我目前正在努力解决这个问题。但长话短说,我想将 2 UTF-8 '\u0002' 之间的字符串转换为粗体格式。这是针对我正在处理的 IRC 客户端的,所以我已经遇到了很多。我已经使用了正则表达式,发现在 rtf 上匹配为 ((\'02) 可以捕获它,但我不确定如何匹配最后一个字符并将其更改为 \bclear 或任何 rtf 格式 close 。

我无法准确粘贴我要解析的文本,因为字符会从帖子中过滤掉。但是当查看 char 值时,它的 int 为 2。

这是粘贴有问题的文本的尝试:

[02:34] 测试测试

4

2 回答 2

1

你可以使用

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

或者

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

取决于您是否要将 \u0002s 保留在其中。

\b 和 \b0 在 RTF 中打开和关闭粗体。

于 2009-02-09T20:58:40.190 回答
0

我没有测试用例,但您也可以将Clipboard类的GetText方法UnicodeTextDataFormat一起使用。基本上,我认为您可以将输入放在剪贴板中并以不同的格式输出(适用于 RTF 等)。这是MS的演示代码(不直接适用,但演示了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;
}

当然,如果您这样做,您可能想要保存和恢复剪贴板中的内容,否则您可能会惹恼您的用户!

于 2013-07-24T20:44:57.670 回答