Aspose::Words::Range::Replace метод

Range::Replace(const System::SharedPtr<System::Text::RegularExpressions::Regex>&, const System::String&) method

Заменяет все вхождения шаблона символов, указанного регулярным выражением, другой строкой.

int32_t Aspose::Words::Range::Replace(const System::SharedPtr<System::Text::RegularExpressions::Regex> &pattern, const System::String &replacement)
ПараметрТипОписание
шаблонconst System::SharedPtr<System::Text::RegularExpressions::Regex>&Шаблон регулярного выражения, используемый для поиска совпадений.
заменаconst System::String&Строка для замены всех вхождений шаблона.

ReturnValue

Количество выполненных замен.

Примечания

Заменяет полное совпадение, захваченное регулярным выражением.

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

Вам следует использовать специальные мета-символы, если необходимо работать с разрывами:

  • %&p - paragraph break
  • %&b - section break
  • %&m - page break
  • %&l - manual line break

Примеры

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

auto doc = System::MakeObject<Aspose::Words::Document>();
auto builder = System::MakeObject<Aspose::Words::DocumentBuilder>(doc);

builder->Writeln(u"I decided to get the curtains in gray, ideal for the grey-accented room.");

doc->get_Range()->Replace(System::MakeObject<System::Text::RegularExpressions::Regex>(u"gr(a|e)y"), u"lavender");

ASSERT_EQ(u"I decided to get the curtains in lavender, ideal for the lavender-accented room.", doc->GetText().Trim());

См. также

Range::Replace(const System::SharedPtr<System::Text::RegularExpressions::Regex>&, const System::String&, const System::SharedPtr<Aspose::Words::Replacing::FindReplaceOptions>&) method

Заменяет все вхождения шаблона символов, указанного регулярным выражением, другой строкой.

int32_t Aspose::Words::Range::Replace(const System::SharedPtr<System::Text::RegularExpressions::Regex> &pattern, const System::String &replacement, const System::SharedPtr<Aspose::Words::Replacing::FindReplaceOptions> &options)
ПараметрТипОписание
шаблонconst System::SharedPtr<System::Text::RegularExpressions::Regex>&Шаблон регулярного выражения, используемый для поиска совпадений.
заменаconst System::String&Строка для замены всех вхождений шаблона.
optionsconst System::SharedPtr<Aspose::Words::Replacing::FindReplaceOptions>&FindReplaceOptions объект для указания дополнительных параметров.

ReturnValue

Количество выполненных замен.

Примечания

Заменяет полное совпадение, захваченное регулярным выражением.

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

Вам следует использовать специальные мета-символы, если необходимо работать с разрывами:

  • %&p - paragraph break
  • %&b - section break
  • %&m - page break
  • %&l - manual line break
  • %&& - & character

См. также

Range::Replace(const System::String&, const System::String&) method

Заменяет все вхождения указанного шаблона строкового символа на строку‑заменитель.

int32_t Aspose::Words::Range::Replace(const System::String &pattern, const System::String &replacement)
ПараметрТипОписание
шаблонconst System::String&Строка, которую нужно заменить.
заменаconst System::String&Строка для замены всех вхождений шаблона.

ReturnValue

Количество выполненных замен.

Примечания

Шаблон не будет использоваться как регулярное выражение. Пожалуйста, используйте Replace(), если вам нужны регулярные выражения.

Использовано сравнение без учёта регистра.

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

Вам следует использовать специальные мета-символы, если необходимо работать с разрывами:

  • %&p - paragraph break
  • %&b - section break
  • %&m - page break
  • %&l - manual line break

Примеры

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

auto doc = System::MakeObject<Aspose::Words::Document>();
auto builder = System::MakeObject<Aspose::Words::DocumentBuilder>(doc);

builder->Writeln(u"Greetings, _FullName_!");

// Выполните операцию поиска и замены в содержимом нашего документа и проверьте количество выполненных замен.
int32_t replacementCount = doc->get_Range()->Replace(u"_FullName_", u"John Doe");

ASSERT_EQ(1, replacementCount);
ASSERT_EQ(u"Greetings, John Doe!", doc->GetText().Trim());

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

auto doc = System::MakeObject<Aspose::Words::Document>();
auto builder = System::MakeObject<Aspose::Words::DocumentBuilder>(doc);

builder->Writeln(u"Every paragraph that ends with a full stop like this one will be right aligned.");
builder->Writeln(u"This one will not!");
builder->Write(u"This one also will.");

System::SharedPtr<Aspose::Words::ParagraphCollection> paragraphs = doc->get_FirstSection()->get_Body()->get_Paragraphs();

ASSERT_EQ(Aspose::Words::ParagraphAlignment::Left, paragraphs->idx_get(0)->get_ParagraphFormat()->get_Alignment());
ASSERT_EQ(Aspose::Words::ParagraphAlignment::Left, paragraphs->idx_get(1)->get_ParagraphFormat()->get_Alignment());
ASSERT_EQ(Aspose::Words::ParagraphAlignment::Left, paragraphs->idx_get(2)->get_ParagraphFormat()->get_Alignment());

// Мы можем использовать объект "FindReplaceOptions" для изменения процесса поиска и замены.
auto options = System::MakeObject<Aspose::Words::Replacing::FindReplaceOptions>();

// Установите свойство "Alignment" в значение "ParagraphAlignment.Right", чтобы выровнять каждый абзац по правому краю.
// которые содержат совпадение, найденное операцией поиска и замены.
options->get_ApplyParagraphFormat()->set_Alignment(Aspose::Words::ParagraphAlignment::Right);

// Замените каждую точку, стоящую непосредственно перед разрывом абзаца, на восклицательный знак.
int32_t count = doc->get_Range()->Replace(u".&p", u"!&p", options);

ASSERT_EQ(2, count);
ASSERT_EQ(Aspose::Words::ParagraphAlignment::Right, paragraphs->idx_get(0)->get_ParagraphFormat()->get_Alignment());
ASSERT_EQ(Aspose::Words::ParagraphAlignment::Left, paragraphs->idx_get(1)->get_ParagraphFormat()->get_Alignment());
ASSERT_EQ(Aspose::Words::ParagraphAlignment::Right, paragraphs->idx_get(2)->get_ParagraphFormat()->get_Alignment());
ASSERT_EQ(System::String(u"Every paragraph that ends with a full stop like this one will be right aligned!\r") + u"This one will not!\r" + u"This one also will!", doc->GetText().Trim());

См. также

Range::Replace(const System::String&, const System::String&, const System::SharedPtr<Aspose::Words::Replacing::FindReplaceOptions>&) method

Заменяет все вхождения указанного шаблона строкового символа на строку‑заменитель.

int32_t Aspose::Words::Range::Replace(const System::String &pattern, const System::String &replacement, const System::SharedPtr<Aspose::Words::Replacing::FindReplaceOptions> &options)
ПараметрТипОписание
шаблонconst System::String&Строка, которую нужно заменить.
заменаconst System::String&Строка для замены всех вхождений шаблона.
optionsconst System::SharedPtr<Aspose::Words::Replacing::FindReplaceOptions>&FindReplaceOptions объект для указания дополнительных параметров.

ReturnValue

Количество выполненных замен.

Примечания

Шаблон не будет использоваться как регулярное выражение. Пожалуйста, используйте Replace(), если вам нужны регулярные выражения.

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

Вам следует использовать специальные мета-символы, если необходимо работать с разрывами:

  • %&p - paragraph break
  • %&b - section break
  • %&m - page break
  • %&l - manual line break
  • %&& - & character

Примеры

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

auto doc = System::MakeObject<Aspose::Words::Document>(get_MyDir() + u"Footer.docx");

System::SharedPtr<Aspose::Words::HeaderFooterCollection> headersFooters = doc->get_FirstSection()->get_HeadersFooters();
System::SharedPtr<Aspose::Words::HeaderFooter> footer = headersFooters->idx_get(Aspose::Words::HeaderFooterType::FooterPrimary);

auto options = System::MakeObject<Aspose::Words::Replacing::FindReplaceOptions>();
options->set_MatchCase(false);
options->set_FindWholeWordsOnly(false);

int32_t currentYear = System::DateTime::get_Now().get_Year();
footer->get_Range()->Replace(u"(C) 2006 Aspose Pty Ltd.", System::String::Format(u"Copyright (C) {0} by Aspose Pty Ltd.", currentYear), options);

doc->Save(get_ArtifactsDir() + u"HeaderFooter.ReplaceText.docx");

Показывает, как переключать чувствительность к регистру при выполнении операции поиска и замены.

auto doc = System::MakeObject<Aspose::Words::Document>();
auto builder = System::MakeObject<Aspose::Words::DocumentBuilder>(doc);

builder->Writeln(u"Ruby bought a ruby necklace.");

// Мы можем использовать объект "FindReplaceOptions" для изменения процесса поиска и замены.
auto options = System::MakeObject<Aspose::Words::Replacing::FindReplaceOptions>();

// Установите флаг "MatchCase" в значение "true", чтобы применять чувствительность к регистру при поиске строк для замены.
// Установите флаг "MatchCase" в значение "false", чтобы игнорировать регистр символов при поиске текста для замены.
options->set_MatchCase(matchCase);

doc->get_Range()->Replace(u"Ruby", u"Jade", options);

ASSERT_EQ(matchCase ? System::String(u"Jade bought a ruby necklace.") : System::String(u"Jade bought a Jade necklace."), doc->GetText().Trim());

Показывает, как переключать операции поиска и замены только отдельными словами.

auto doc = System::MakeObject<Aspose::Words::Document>();
auto builder = System::MakeObject<Aspose::Words::DocumentBuilder>(doc);

builder->Writeln(u"Jackson will meet you in Jacksonville.");

// Мы можем использовать объект "FindReplaceOptions" для изменения процесса поиска и замены.
auto options = System::MakeObject<Aspose::Words::Replacing::FindReplaceOptions>();

// Установите флаг "FindWholeWordsOnly" в значение "true", чтобы заменять найденный текст, если он не является частью другого слова.
// Установите флаг "FindWholeWordsOnly" в значение "false", чтобы заменять весь текст независимо от его окружения.
options->set_FindWholeWordsOnly(findWholeWordsOnly);

doc->get_Range()->Replace(u"Jackson", u"Louis", options);

ASSERT_EQ(findWholeWordsOnly ? System::String(u"Louis will meet you in Jacksonville.") : System::String(u"Louis will meet you in Louisville."), doc->GetText().Trim());

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

auto doc = System::MakeObject<Aspose::Words::Document>();
auto builder = System::MakeObject<Aspose::Words::DocumentBuilder>(doc);

System::SharedPtr<Aspose::Words::Tables::Table> table = builder->StartTable();
builder->InsertCell();
builder->Write(u"Carrots");
builder->InsertCell();
builder->Write(u"50");
builder->EndRow();
builder->InsertCell();
builder->Write(u"Potatoes");
builder->InsertCell();
builder->Write(u"50");
builder->EndTable();

auto options = System::MakeObject<Aspose::Words::Replacing::FindReplaceOptions>();
options->set_MatchCase(true);
options->set_FindWholeWordsOnly(true);

// Выполните операцию поиска и замены во всей таблице.
table->get_Range()->Replace(u"Carrots", u"Eggs", options);

// Выполните операцию поиска и замены в последней ячейке последней строки таблицы.
table->get_LastRow()->get_LastCell()->get_Range()->Replace(u"50", u"20", options);

ASSERT_EQ(System::String(u"Eggs\a50\a\a") + u"Potatoes\a20\a\a", table->GetText().Trim());

См. также