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üzerindeReplace()‘ı çağırın, ya da işlemi sınırlamak için daha dar birRange‘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
| Sorun | Neden | Düzeltme |
|---|---|---|
| Değiştirme yeni biçimlendirmeyi uygulamıyor | ApplyFont/ApplyParagraphFormat FindReplaceOptions üzerinde ayarlanmamış | İlgili biçimlendirme özelliklerini options nesnesine ayarlayın. |
| Beklenmedik şekilde izlenen değişiklik silmelerinde eşleşmeler bulundu | IgnoreDeleted 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ğil | UseSubstitutions = true‘ı ayarlayarak $1-stil ikamesini etkinleştirin |
| Geri çağırma tabanlı değiştirme beklendiğinde durmuyor | Geri ç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 / Metot | Açıklama |
|---|---|
Range.Replace() | İsteğe bağlı FindReplaceOptions ile bir aralıkta düzenli ifade bul/değiştir |
FindReplaceOptions | Değiştirme işlemleri için eşleşme davranışını, biçimlendirmeyi ve yapısal kapsamı yapılandırır |
FindReplaceDirection | Enum: Forward, Backward |
IReplacingCallback | Her eşleşme için özel değiştirme mantığı arayüzü |
ReplacingArgs | Her eşleşme için IReplacingCallback.Replacing()‘a iletilen veri |
ReplaceAction | Her eşleşme sonucunu kontrol eden enum: Replace, Skip, Stop |