微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在word-addin的一段文本中定位一些单词

如何解决如何在word-addin的一段文本中定位一些单词

我想创建 word addin 数字写作辅助工具。

第一次发送全文到服务器并获得拼写错误和他的位置。但是当编辑文本时 我不知道该怎么办

例如通过计时器每 3 毫秒获取新的全文并与以前的全文进行比较(通过库 diffplex),如果我有新的插入(word、line、paragraph ,..)将新文本发送到服务器不是全文, 并再次获得新的拼写错误列表和他在文本中的位置,该位置不正确,因为它与同一段代码相关,而不是全文

然后我需要文本或字符串中的单词位置(或单词的索引起始字符)

我想到了 CARET 但 当引发事件 timer_tick 和 CARET 改变位置并且我的计算不正确时可能会发生。

你能帮我建议一种获取位置这个词的方法吗? timer_tick 上升时的代码

     SideBySideDiffBuilder h = new SideBySideDiffBuilder();
      var hd = h.BuildDiffModel(prev_doc,current_doc.Content.Text);
 StringBuilder textInsertInModified = new StringBuilder();
                     StringBuilder textDeleteInModified = new StringBuilder();
                     StringBuilder textInsert = new StringBuilder();
                StringBuilder textDelete = new StringBuilder();
 foreach (var line in hd.NewText.Lines)
                {
                    if (line.Type == ChangeType.Deleted)
                    {
                        textDelete.Append(line.Text);
                    }
                    else if (line.Type == ChangeType.Inserted)
                    {
                        textInsert.Append(line.Text);
                    }
                    else if (line.Type == ChangeType.Modified)
                    {
                        foreach (var l in line.SubPieces)
                        {
                            if (l.Type == ChangeType.Inserted)
                            {
                                textInsertInModified.Append(l.Text);
                            }
                        }
                        foreach (var l in line.SubPieces)
                        {
                            if (l.Type == ChangeType.Deleted)
                            {
                                textDeleteInModified.Append(l.Text);
                            }
                        }

                    }
                    else if (line.Type == ChangeType.Imaginary)
                    {
                        //res3 += "- " + (i++) + line.Text + "(" + line.Position + ")" + "\n";
                    }

                }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。