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。。。

  • 相关阅读:
    PHP函数正则表达式函数
    PHP函数变量函数
    Passing Wpf Objects Between Threads (With Source Code)
    分手后,何必再要做朋友?
    享受爱,给予爱
    人生如戏
    深夜电话
    我们也要在不同的事情上面有不同的哲学的情况,才行
    幸 福
    你的平安夜是这样过的吗?
  • 原文地址:https://www.cnblogs.com/ping9719/p/14178430.html
Copyright © 2011-2022 走看看