我目前正在试图解决这个问题。但长话短说,我想将2 UTF-8'\ u0002'之间的字符串转换为粗体格式。这是我正在研究的IRC客户端所以我已经遇到了很多这样的问题。我已经treid正则表达式并发现匹配rtf为((\'02)可以捕获它,但我不确定如何匹配最后一个字符并将其更改为\ bclear或者任何rtf格式化close。
我无法准确粘贴我正在尝试解析的文本,因为字符会从帖子中过滤掉。但是当查看char值时,它的int为2。
以下是尝试粘贴有问题的文字:
[02:34]测试测试
答案 0 :(得分: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中打开和关闭粗体。
答案 1 :(得分:0)
我没有测试用例,但您也可以使用Clipboard
类GetText
method和Unicode
TextDataFormat。基本上,我认为您可以将输入放在剪贴板中并以不同的格式将其输出(适用于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;
}
当然,如果你这样做,你可能想要保存和恢复剪贴板中的内容,否则你可能会让用户感到不安!