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;
            }

  • 相关阅读:
    WMS学习笔记:1.尝试加载WMS
    ftp文件上传和下载
    [WorldWind学习]19.WebDownload
    ASP.NET C# 如何在程序中控制IIS服务或应用程序池重启?
    asp.net mvc 全局权限过滤器及继成权限方法
    使用ActionFilterAttribute 记录 WebApi Action 请求和返回结果记录
    单点登录系统功能调试界面
    asp.net 读取RedisSessionStateProvider配置
    Redis-benchmark测试Redis性能
    ASP.NET MVC中移除冗余Response Header
  • 原文地址:https://www.cnblogs.com/xiarifeixue/p/1905157.html
Copyright © 2011-2022 走看看