Я пытаюсь найти/заменить в документе Word. Однако формат шрифта (и не только), как жирный шрифт/семейство/цвета и т. Д., Полностью исчез после замены. Вот пример моего кода (он заменяет «a1» с греческим характером, если греческие буквы следует):Как Regex.Replace в Word без разрушения формата?
Word.Selection selection = this.Application.Selection;
selection.Range.Text = Regex.Replace(selection.Range.Text, @"(a1)\p{IsGreek}+", "ά");
Есть ли простой способ сделать это?
Я также попытался более сложным:
MatchCollection matches = Regex.Matches(selection.Range.Text, @"(a1)\p{IsGreek}+", RegexOptions.Multiline);
foreach (Match match in matches)
{
object start = match.Groups[1].Index;// -counter * (match.Groups[1].Length - 1);
object end = (int)start + match.Groups[1].Length;
Word.range l_rng = doc.Range(ref start, ref end);
l_rng.Text = "ά";
}
Этот подход сохраняет формат, но в случае очень больших документов, start
и end
индексы перепутались через некоторое время. Вероятно, из-за разрывов страниц или других персонажей, но я пока не могу понять.
Не обычный поиск и замена сделать трюк? – Jerry
Нет, мне нужно искать с использованием шаблона регулярных выражений. –
Вы можете выполнить поиск по регулярному выражению в диалоговом окне «Поиск и замена», нажав «Использовать подстановочные знаки», и я считаю, что вы можете использовать '[Α-π]' для сопоставления греческих символов в диалоговом окне (это первые и последние греческие символы). – Jerry