C# 如何在word addin中找到某个单词在文本中的位置

C# 如何在word addin中找到某个单词在文本中的位置,c#,string,stringbuilder,word-addins,diffplex,C#,String,Stringbuilder,Word Addins,Diffplex,我想创建word addin这一数字写作辅助工具 这是第一次向服务器发送全文,并得到拼写错误和他的位置。但是当编辑文本时 我不知道该怎么办 例如,通过计时器每隔3毫秒获取新的全文,并与以前的全文进行比较(通过库diffplex),如果我有新的插入(单词、行、段落……),则将新的文本段发送到服务器,而不是全文, 再次得到新的拼写错误列表和他在文本中的位置,这个位置是不正确的,因为它与同一段代码有关,而不是全文 然后我需要单词在文本或字符串中的位置(或单词的索引起始字符) 我想到了插入符号,但是 这

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

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

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

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

我想到了插入符号,但是 这可能是因为raise事件计时器_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";
                    }

                }