我在删除一些带有 word interop 的特定换行符时遇到问题。似乎 doc.Content.Text 的索引与 word.. 的索引不匹配
我需要删除所有没有点作为前一个字符的中断。
对于小型文档,它可以工作,但之后只有大约 3-5 个中断,所选范围不是分页符,任何人都知道如何在没有 range.select(start: start, end: end) 的情况下删除这些中断或知道问题?
例如我有以下文字:
美国调查人员对 340,000 人进行的一项民意调查发现,周一的情绪并不比其他工作日差,周五除外。((休息))
随着周末的临近,人们变得更加快乐,为 ((break to delete)) 的概念提供了支持
“那个星期五的感觉”。((休息))
class Program
{
static void Main(string[] args)
{
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
word.Visible = true;
string document = @"C:\bin\Debug\123.doc";
if (document != null)
{
Document doc = word.Documents.Open(document, ReadOnly: false, Visible: true);
doc.Activate();
string text = doc.Content.Text;
int index = text.IndexOf("\r");
int deletetCount = 0;
while(index != -1)
{
if (index != 0 && text[index - 1] != '.')
{
int start = index + 1 - deletetCount;
int end = start + 1;
if (start >= 0 && end >= 0 && end > start)
{
Range range = doc.Range(Start: start, End: end);
range.Select();
range.Delete();
deletetCount++;
}
}
index = text.IndexOf("\r", index + 1);
}
}
}
}