FindReplaceDirection
内容
[
隐藏
]FindReplaceDirection enumeration
指定替换操作的方向。
public enum FindReplaceDirection
价值观
姓名 | 价值 | 描述 |
---|---|---|
Forward | 0 | 匹配的项目从第一个到最后一个被替换。 |
Backward | 1 | 匹配项从最后到第一个替换。 |
例子
演示如何确定查找和替换操作遍历文档的方向。
public void Direction(FindReplaceDirection findReplaceDirection)
{
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// 插入我们可以使用正则表达式模式搜索的三个运行。
// 将其中一个运行放在文本框中。
builder.Writeln("Match 1.");
builder.Writeln("Match 2.");
builder.Writeln("Match 3.");
builder.Writeln("Match 4.");
// 我们可以使用“FindReplaceOptions”对象来修改查找和替换过程。
FindReplaceOptions options = new FindReplaceOptions();
// 将自定义回调分配给“ReplacingCallback”属性。
TextReplacementRecorder callback = new TextReplacementRecorder();
options.ReplacingCallback = callback;
// 将“Direction”属性设置为“FindReplaceDirection.Backward”以获取查找和替换
// 操作从范围末尾开始,并遍历回开头。
// 将“Direction”属性设置为“FindReplaceDirection.Backward”以获取查找和替换
// 操作从范围的开头开始,遍历到结尾。
options.Direction = findReplaceDirection;
doc.Range.Replace(new Regex(@"Match \d*"), "Replacement", options);
Assert.AreEqual("Replacement.\r" +
"Replacement.\r" +
"Replacement.\r" +
"Replacement.", doc.GetText().Trim());
switch (findReplaceDirection)
{
case FindReplaceDirection.Forward:
Assert.AreEqual(new[] { "Match 1", "Match 2", "Match 3", "Match 4" }, callback.Matches);
break;
case FindReplaceDirection.Backward:
Assert.AreEqual(new[] { "Match 4", "Match 3", "Match 2", "Match 1" }, callback.Matches);
break;
}
}
/// <summary>
/// 按照发生的顺序记录查找和替换操作期间发生的所有匹配项。
/// </summary>
private class TextReplacementRecorder : IReplacingCallback
{
ReplaceAction IReplacingCallback.Replacing(ReplacingArgs e)
{
Matches.Add(e.Match.Value);
return ReplaceAction.Replace;
}
public List<string> Matches { get; } = new List<string>();
}