思路
1.构建字典。
2.在字符串中匹配字典的key,将匹配到的key转换成对应的value
3.将替换后的字符串,转化成xaml形式,加载该xaml以实现富文本。

代码如下

private Paragraph getRichText(string richText)
{
var r = new Regex(builder.ToString()); //获取正则。
var mc = r.Matches(richText); //匹配富文本,获取匹配到的集合。
foreach (Match m in mc) //遍历集合将richText中所有的值转换成xaml的形式。
{
//string.Format 中的内容不要出现换行符,否则会出现换行出错。
richText = richText.Replace(m.Value, string.Format(@"<InlineUIContainer><Border><Image Source=""ms-appx:///Assets/Emoji/{0}.png"" Width=""30"" Height=""30""/></Border></InlineUIContainer>", emojiDict[m.Value]));
}
richText = richText.Replace("\r\n", "<LineBreak/>"); //将换行符转换成<LineBreak/>,用于实现换行。 //生成xaml
var xaml = string.Format(@"<Paragraph
xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"">
<Paragraph.Inlines>
<Run></Run>
{0}
</Paragraph.Inlines>
</Paragraph>", richText);
var p = (Paragraph)XamlReader.Load(xaml);
p.Foreground = new SolidColorBrush(Color.FromArgb(, , , ));
return p;
}

Demo分享链接:http://pan.baidu.com/s/1hqGVOcW

运行图如下

有问题请加群:53078485

最新文章

  1. Oracle ------ SQLDeveloper中SQL语句格式化快捷键
  2. Qt 之 数字钟
  3. Activemq Jolokia
  4. XAMPP 在windows下无法启动Apache解决方案
  5. PDF判断打印是A4还是B5
  6. label标签的属性
  7. java和javax都是Java的API包,java是核心包,javax的x是extension的意思,也就是扩展包。
  8. python中raw_input()与input()
  9. jquery模仿css3延迟效果
  10. MassTransit 实现发布/订阅
  11. ckplayer跨域调用
  12. ActiveMQ(2)---ActiveMQ原理分析之消息发送
  13. transformer 源码
  14. EasyUI学习总结(三)——easyloader源码分析(转载)
  15. unigui回车代替TAB
  16. MVC架构中,用户的请求简单梳理
  17. Asp.net中操作Excel的代码解析
  18. Linux sar
  19. 黑客之google入侵网站常用方式 2
  20. 使用Git将本地项目上传到Github操作详解

热门文章

  1. IE下实现打印功能
  2. Node创建TCP聊天
  3. 公用表表达式(CTE)引发的改变执行顺序同WHERE条件顺序引发的bug
  4. oracle缓存池使用解析
  5. Eclipse编译去除svn文件夹
  6. 【转】LINUX 5 常用ftp telnet配置
  7. Android中手机号、车牌号正则表达式
  8. redis watch multi exec 关系
  9. Check list
  10. codeforces 709C C. Letters Cyclic Shift(贪心)