FindReplaceOptions

FindReplaceOptions()

Инициализирует новый экземпляр класса FindReplaceOptions с настройками по умолчанию.

public FindReplaceOptions()

Примеры

Показывает, как распознавать и использовать замены в шаблонах замены.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

builder.Write("Jason gave money to Paul.");

Regex regex = new Regex(@"([A-z]+) gave money to ([A-z]+)");

FindReplaceOptions options = new FindReplaceOptions();
options.UseSubstitutions = true;

// Использование устаревшего режима не поддерживает многие расширенные функции, поэтому нам нужно установить его в значение «false».
options.LegacyMode = false;

doc.Range.Replace(regex, @"$2 took money from $1", options);

Assert.AreEqual(doc.GetText(), "Paul took money from Jason.\f");

Смотрите также


FindReplaceOptions(FindReplaceDirection)

Инициализирует новый экземпляр класса FindReplaceOptions с указанным направлением.

public FindReplaceOptions(FindReplaceDirection direction)
ПараметрТипОписание
directionFindReplaceDirectionНаправление операции поиска и замены.

Смотрите также


FindReplaceOptions(IReplacingCallback)

Инициализирует новый экземпляр класса FindReplaceOptions с указанным заменяющим обратным вызовом.

public FindReplaceOptions(IReplacingCallback replacingCallback)
ПараметрТипОписание
replacingCallbackIReplacingCallbackОбратный вызов, используемый для замены найденного текста.

Примеры

Показывает, как отслеживать порядок, в котором операция замены текста проходит по узлам.

public void Order(bool differentFirstPageHeaderFooter)
{
    Document doc = new Document(MyDir + "Header and footer types.docx");

    Section firstPageSection = doc.FirstSection;

    ReplaceLog logger = new ReplaceLog();
    FindReplaceOptions options = new FindReplaceOptions(logger);

    // Использование другого верхнего/нижнего колонтитула для первой страницы повлияет на порядок поиска.
    firstPageSection.PageSetup.DifferentFirstPageHeaderFooter = differentFirstPageHeaderFooter;
    doc.Range.Replace(new Regex("(header|footer)"), "", options);

    if (differentFirstPageHeaderFooter)
        Assert.AreEqual("First header\nFirst footer\nSecond header\nSecond footer\nThird header\nThird footer\n", 
            logger.Text.Replace("\r", ""));
    else
        Assert.AreEqual("Third header\nFirst header\nThird footer\nFirst footer\nSecond header\nSecond footer\n", 
            logger.Text.Replace("\r", ""));
}

/// <summary>
/// Во время операции поиска и замены записывает содержимое каждого узла, содержащего текст, который операция «находит»,
/// в том состоянии, в котором он находился до замены.
/// Это отобразит порядок, в котором операция замены текста проходит по узлам.
/// </summary>
private class ReplaceLog : IReplacingCallback
{
    public ReplaceAction Replacing(ReplacingArgs args)
    {
        mTextBuilder.AppendLine(args.MatchNode.GetText());
        return ReplaceAction.Skip;
    }

    internal string Text => mTextBuilder.ToString();

    private readonly StringBuilder mTextBuilder = new StringBuilder();
}

Смотрите также


FindReplaceOptions(FindReplaceDirectionIReplacingCallback)

Инициализирует новый экземпляр класса FindReplaceOptions с указанным направлением и заменяющим обратным вызовом.

public FindReplaceOptions(FindReplaceDirection direction, IReplacingCallback replacingCallback)
ПараметрТипОписание
directionFindReplaceDirectionНаправление операции поиска и замены.
replacingCallbackIReplacingCallbackОбратный вызов, используемый для замены найденного текста.

Смотрите также