我正在尝试在Word文档中搜索/替换。但是,替换后,字体格式(而不仅仅是粗体/字体系列/颜色等)完全消失了。这是我的代码示例(它取代了#34; a1"带有希腊字符,如果希腊字母跟随):
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
索引会在一段时间后搞砸。可能是因为分页符或其他字符,但我还不知道。
答案 0 :(得分:1)
您可以使用简单的搜索&替换为此,由于此功能根本不触及格式,这可能是更好的解决方案。例如,您可以将此正则表达式用于查找,确保启用“使用通配符”#39; (点击'更多>>'以在对话框中显示此功能):
a1([Ά-ω]@)
[Ά-ω]
会匹配希腊字符(我非常确定你拥有大部分字符,而不是所有希腊字符,如果没有,我可以更正)和{{ 1}}表示一个或多个。
然后在替换中,你可以把它放回去:
@
ά\1
将引用我们之前匹配的希腊字符捕获组。
输入:
\1
输出:
a1Άλφα