zoukankan      html  css  js  c++  java
  • WPF的RichTextBox中查找字符串位置

    已经琢磨2天了,一直没明白如何在WPF的RichTextBox中查找一个字符串的位置,最后在google上找到了一个牛人的解决办法,收藏过来,留着备用。

    private List<TextRange> FindAllMatchedTextRanges(RichTextBox richBox, string keyword)
            {
                List
    <TextRange> trList = new List<TextRange>();
               
    //设置文字指针为Document初始位置
                TextPointer position = richBox.Document.ContentStart;
               
    while (position != null)
                {
                   
    //向前搜索,需要内容为Text
                    if (position.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.Text)
                    {
                       
    //拿出Run的Text
                        string text = position.GetTextInRun(LogicalDirection.Forward);
                       
    //可能包含多个keyword,做遍历查找
                        int index = 0;
                       
    while (index < text.Length)
                        {
                            index
    = text.IndexOf(keyword, index);
                           
    if (index == -1)
                            {
                               
    break;
                            }
                           
    else
                            {
                               
    //添加为新的Range
                                TextPointer start = position.GetPositionAtOffset(index);
                                TextPointer end
    = start.GetPositionAtOffset(keyword.Length);

              trList.Add(new TextRange(start, end));
                                index
    += keyword.Length;
                            }
                        }
                    }
                   
    //文字指针向前偏移
                    position = position.GetNextContextPosition(LogicalDirection.Forward);
                }
               
    return trList;
            }

  • 相关阅读:
    [链接]实现GEF程序中的剪切/复制/粘贴功能
    管理Oracle数据库要注意的一些问题
    [Eclipse]GEF入门系列(五、浅谈布局)
    由于Eclipse版本不符造成的异常
    [Eclipse]处理颜色类型的偏好项
    [Eclipse]关于EMF
    [Eclipse]GEF入门系列(六、添加菜单和工具条)
    《敏捷个人认识自我,管理自我》前言
    【敏捷个人俱乐部】QQ群第二次公开接受加入 及 12月4日晚上聊天记录
    101与金根回顾敏捷个人:(97)通过实践TOGAF来思考如何学习并应用新的方法?
  • 原文地址:https://www.cnblogs.com/xiarifeixue/p/1905157.html
Copyright © 2011-2022 走看看