none
如何使用正则替换文章内表情? RRS feed

  • 问题

  • 如题,就如同微博一样,项目内有一批gif图片,每篇评论内都有表情,如:[:01] [:02],希望通过正则替换显示项目内的gif图片,使用C#XAML应该如何实现?如果可以实现,那么显示评论的最佳控件又是什么?

    希望板主给个解决方案,感激不尽!

    2012年9月14日 6:17

答案

全部回复

  • C# XAML 方案下依旧支持正则,我这里有个想法,不知道是不是最好的, 你可以用如同你设计的这些特殊符号嵌入到字符串中, 你可以设计这个字符串为 一个 StackPanel的XAML 形式,里面的字符都封装在TextBlock , 也就说将你要最终呈现的效果都写成XAML字符串形式。

    然后用正则表达式匹配出,做替换操作,替换成 XAML 形式的<Image Source="..."/> 字符串, 然后你可以用 XamlReader.Load 来读取你的这个包含Image的XAML字符串,反序列化成一个StackPanel对象,然后可以嵌入你的应用中。

    比如:

    <StackPanel xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">
    <TextBlock>
    Test[:01]test
    </TextBlock>
    </StackPanel>

    替换后成

    <StackPanel xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">
    <TextBlock>
    Test
    </TextBlock>
    <Image Source="..." />
    <TextBlock>
    test
    </TextBlock>
    </StackPanel>

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年9月14日 9:19
    版主
  • 我还不是太清楚,<TextBlock Text="{Binding Comment}" />  我这里读出来时,直接把<Image Source="..." />的标签也读出来,你所说的封装在TextBlock里字符串是怎样的?使用 XamlReader.Load 来读取你的这个包含Image的XAML字符串,反序列化成一个StackPanel对象,然后可以嵌入你的应用中。这个过程我还是没有搞懂,版主有没有代码可以给我参考一下?

    万分感谢!

    2012年9月18日 8:13
  • 一个简单的例子,你参考看看原理:https://skydrive.live.com/#cid=51B2FDD068799D15&id=51B2FDD068799D15%211106 


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 kotenkai 2012年9月18日 9:30
    2012年9月18日 9:17
    版主
  • 项目运行不了,但代码思路已经有了,正在研究中,非常感谢Bob Bao!
    2012年9月18日 9:31
  • 这个方法还不错,但感觉还是有点复杂,有好的方法还可以继续推荐了....
    2012年10月9日 4:22