Bul ve Değiştir

Bul ve Değiştir

Aspose.Words FOSS for .NET, Range.Replace() aracılığıyla düzenli ifade tabanlı bul ve değiştir özelliği sağlar, FindReplaceOptions ile yapılandırılabilir ve gelişmiş senaryolar için Aspose.Words.Replacing ad alanından özel bir IReplacingCallback uygulaması sunar.


Temel Bul ve Değiştir

Range.Replace(pattern, replacement), aralık boyunca — Document.Range üzerinde çağrıldığında tüm belge — düzenli ifade tabanlı arama ve değiştirme işlemini yürütür. Replace(pattern, replacement, options) aşırı yüklemesi, daha ince kontrol için bir FindReplaceOptions nesnesi kabul eder: MatchCase ve FindWholeWordsOnly eşleşme davranışını ayarlar, Direction (bir FindReplaceDirection değeri, Forward veya Backward) arama yönünü kontrol eder ve ApplyFont / ApplyParagraphFormat bir değişikliğin yalnızca yeni metin yerine yeni biçimlendirme taşımasına izin verir.


Biçimlendirme Bilgili ve Yapısal Seçenekler

FindReplaceOptions, bir eşleşmenin hangi belge yapıları üzerinden geçebileceğini veya yok sayabileceğini belirleyen çeşitli bayraklar içerir: IgnoreDeleted ve IgnoreInserted, izlenen değişiklik içeriğinin eşleşmeye katılıp katılmayacağını kontrol eder, IgnoreFields ve IgnoreFieldCodes, alan sonuç metni ve alan kodlarının aranıp aranmayacağını denetler, IgnoreFootnotes dipnot/sonnot içeriğini hariç tutar ve IgnoreStructuredDocumentTags ile IgnoreShapes sırasıyla içerik denetimlerini ve şekil metnini dışlar. UseSubstitutions, değiştirme dizesinde düzenli ifade ikame sözdizimini (ör. $1) etkinleştirir. LegacyMode ve UseLegacyOrder, daha önceki mantıkla işlenen belgelerle uyumluluk için eski eşleşme davranışını korur.


IReplacingCallback ile Özel Değiştirme Mantığı

Sabitleştirilmiş bir değiştirme dizesi olarak ifade edilemeyen değiştirme mantığı için IReplacingCallback ve tek Replacing(args) yöntemini uygulayın, ardından uygulamayı FindReplaceOptions.ReplacingCallback‘ye atayın (veya doğrudan FindReplaceOptions(replacingCallback) yapıcısına geçirin). Geri arama, her eşleşme için bir ReplacingArgs nesnesi alır ve Match (temel düzenli ifade eşleşmesi), MatchNode / MatchEndNode (eşleşmeyi içeren belge düğümleri), MatchOffset ve ayarlanabilir bir Replacement dizesi sunar. Geri aramadan bir ReplaceAction değeri döndürmek — Replace, Skip veya Stop — o belirli eşleşmenin değiştirilip değiştirilmeyeceğini, yalnız bırakılıp bırakılmayacağını veya tüm bul/degistir işleminin durdurulup durdurulmayacağını kontrol eder.


İpuçları ve En İyi Uygulamalar

  • Belge genelinde değiştirme için Document.Range üzerinde Replace()‘ı çağırın, ya da işlemi sınırlamak için daha dar bir Range‘de (örneğin tek bir bölümün aralığı gibi) Replace()‘ı kullanın.
  • Arama teriminin daha uzun bir kelimenin alt dizesi olarak eşleşmesini önlemek için FindWholeWordsOnly = true‘ı ayarlayın.
  • Değiştirmenin, temel alan talimat metni yerine görüntülenen alan sonuçları üzerinde çalışmasını istediğinizde IgnoreFieldCodes = true‘ı kullanın.
  • Değiştirme metni sabit bir dize yerine eşleşme bağlamına (çevreleyen düğüm, biçimlendirme veya konum) bağlı olduğunda, son işleme yerine IReplacingCallback‘ı tercih edin.
  • Bir koşul karşılandığında kalan tüm eşleşmeleri işlemeye devam etmek yerine, bul/değiştir işlemini erken sonlandırmak için geri aramadan ReplaceAction.Stop‘ı döndürün.

Yaygın Sorunlar

SorunNedenDüzeltme
Değiştirme yeni biçimlendirmeyi uygulamıyorApplyFont/ApplyParagraphFormat FindReplaceOptions üzerinde ayarlanmamışİlgili biçimlendirme özelliklerini options nesnesine ayarlayın.
Beklenmedik şekilde izlenen değişiklik silmelerinde eşleşmeler bulunduIgnoreDeleted varsayılanında bırakıldıSilinmiş revizyon içeriğini atlamak için IgnoreDeleted = true ayarlayın
Regex grup referansları, değiştirme metninde yerine konulmadıUseSubstitutions etkin değilUseSubstitutions = true‘ı ayarlayarak $1-stil ikamesini etkinleştirin
Geri çağırma tabanlı değiştirme beklendiğinde durmuyorGeri çağırma, Stop yerine Replace/Skip döndürüyorİşlem bitmesi gerektiğinde Replacing()‘den ReplaceAction.Stop döndür

FAQ

Range.Replace() düzenli ifadeleri destekliyor mu?

Evet — pattern argümanı bir düzenli ifadedir ve aralığın metnine karşı eşleşir.

Metni sadece belirli bir bölümde, tüm belge yerine nasıl değiştiririm?

Document.Range yerine o bölümün Range üzerinde Replace() çağırın.

Değiştirme metninin eşleşen şeye bağlı olmasını nasıl sağlarım?

IReplacingCallback uygulayın, eşleşme ayrıntılarını ReplacingArgs‘den okuyun, ReplacingArgs.Replacement‘yi hesaplanan metne ayarlayın ve ReplaceAction.Replace‘ü döndürün.

Bul/değiştir araması belge içinde geriye doğru yapılabilir mi?

Evet — FindReplaceOptions.Direction‘ı FindReplaceDirection.Backward olarak ayarlayın.


API Reference Özeti

Sınıf / MetotAçıklama
Range.Replace()İsteğe bağlı FindReplaceOptions ile bir aralıkta düzenli ifade bul/değiştir
FindReplaceOptionsDeğiştirme işlemleri için eşleşme davranışını, biçimlendirmeyi ve yapısal kapsamı yapılandırır
FindReplaceDirectionEnum: Forward, Backward
IReplacingCallbackHer eşleşme için özel değiştirme mantığı arayüzü
ReplacingArgsHer eşleşme için IReplacingCallback.Replacing()‘a iletilen veri
ReplaceActionHer eşleşme sonucunu kontrol eden enum: Replace, Skip, Stop

Ayrıca Bakınız

 Türkçe