zoukankan      html  css  js  c++  java
  • C# VSTO 在Word中搜索文本并获取Range(结果范围)

    C# VSTO 在Word中搜索文本并获取Range

    C# VSTO Word 搜索  获取 结果范围 Range

    C# VSTO Word 搜索  得到 结果范围 Range

    C# VSTO Word Find  得到 结果范围 Range

    可以通过以下方式在Word文件中找到文本:

                range.Find.Execute(FindText: findText, MatchCase: true);
    

    这里Execute()方法返回的是bool,是否找到了文本。

    但是我们需要多个文字的范围(Range)

    解决方案:

      

            /// <summary>
            /// 查找所有
            /// </summary>
            /// <param name="range"></param>
            /// <param name="findText">查找内容</param>
            public static List<Range> FindAll(this Range range, string findText)
            {
                int start = range.Start;
                int end = range.End;
    
                List<Range> ranges = new List<Range>();
    
                range.Find.Execute(FindText: findText, MatchCase: true);
                while (range.Find.Found)
                {
                    //搜索会改变range,这里做了一个超出范围的判断
                    if (range.Start > end)
                        break;
    
                    ranges.Add(range.Document.Range(range.Start, range.End));
                    range.Find.Execute(FindText: findText, MatchCase: true);
                }
    
                //对原来的range还原
                range.SetRange(start, end);
                return ranges;
            }
    

      

    测试:

    完美,ok,

    顺便扩展一个方法:

      

            /// <summary>
            /// 查找第一个
            /// </summary>
            /// <param name="range"></param>
            /// <param name="findText">查找内容</param>
            /// <returns>没有找到为空</returns>
            public static Range FindFirst(this Range range, string findText)
            {
                int start = range.Start;
                int end = range.End;
    
                bool isOk = range.Find.Execute(FindText: findText, MatchCase: true);
                if (isOk)
                {
                    var newRange = range.Document.Range(range.Start, range.End);
                    range.SetRange(start, end);
                    return newRange;
                }
                else
                    return null;
            }
    

      

    非常的ok。。。

  • 相关阅读:
    (转载)UITableView的详细讲解
    (转载)ios关闭虚拟键盘的几种方法
    (转载)NSTimer
    (转)FirstResponder 释放问题
    (转)IOS UITableView学习
    UITableView中的(NSIndexPath *)indexPath
    iOS开发UITableView基本使用方法总结1
    xcode快捷键的使用
    k8s1.13.0二进制部署-master节点(三)
    k8s1.13.0二进制部署-node节点(四)
  • 原文地址:https://www.cnblogs.com/ping9719/p/14178430.html
Copyright © 2011-2022 走看看