Keresés és csere

Keresés és csere

Aspose.Words FOSS a .NET számára reguláris-kifejezés alapú keresést és cserét biztosít a(z) Range.Replace() segítségével, amely a(z) FindReplaceOptions révén konfigurálható, és haladó esetekben egy egyéni IReplacingCallback megvalósítást a(z) Aspose.Words.Replacing névtérből.


Alapvető keresés és csere

Range.Replace(pattern, replacement) reguláris-kifejezés keresés-csere műveletet hajt végre az egész tartományon — a teljes dokumentumon, ha a(z) Document.Range-en van meghívva. A(z) Replace(pattern, replacement, options) túlterhelés egy FindReplaceOptions objektumot fogad a finomabb vezérléshez: MatchCase és FindWholeWordsOnly módosítják az egyezés viselkedését, a(z) Direction (egy FindReplaceDirection érték, Forward vagy Backward) irányítja a keresés irányát, és a ApplyFont / ApplyParagraphFormat lehetővé teszi, hogy a csere új formázást vigyen magával, nem csak új szöveget.


Formázat-érzékeny és szerkezeti beállítások

FindReplaceOptions több jelzőt tartalmaz, amelyek meghatározzák, hogy a dokumentum mely elemei keresztülmennek vagy mellőződnek egy egyezés során: IgnoreDeleted és IgnoreInserted szabályozzák, hogy a nyomon követett változtatások tartalma részt vegyen-e a keresésben, IgnoreFields és IgnoreFieldCodes azt, hogy a mezőeredmény szöveg és a mezőkódok legyenek-e keresve, IgnoreFootnotes kizárja a lábjegyzet/végjegyzet tartalmat, a IgnoreStructuredDocumentTags és IgnoreShapes pedig rendre a tartalomvezérlőket és a forma szöveget zárják ki. UseSubstitutions engedélyezi a reguláris-kifejezés helyettesítési szintaxist (például $1) a cserekarakterláncban. LegacyMode és UseLegacyOrder megőrzik a régebbi egyezési viselkedést a korábbi logikával feldolgozott dokumentumok kompatibilitása érdekében.


Egyedi csere logika az IReplacingCallback segítségével

Az olyan helyettesítési logikához, amelyet nem lehet rögzített helyettesítő karakterláncként kifejezni, valósítsa meg a IReplacingCallback és annak egyetlen Replacing(args) metódusát, majd rendelje hozzá a megvalósítást a FindReplaceOptions.ReplacingCallback (vagy adja át közvetlenül a FindReplaceOptions(replacingCallback) konstruktorának). A visszahívás minden egyezéshez egy ReplacingArgs objektumot kap, amely a Match (az alapvető reguláris kifejezés egyezés), a MatchNode / MatchEndNode (az egyezést tartalmazó dokumentumcsomópontok), MatchOffset, valamint egy beállítható Replacement karakterláncot teszi elérhetővé. A visszahívásból egy ReplaceAction érték visszaadása — Replace, Skip vagy Stop — meghatározza, hogy az adott egyezés helyettesítve legyen, változatlanul maradjon, vagy leállítsa a teljes keresés/csere műveletet.


Tippek és bevált gyakorlatok

  • Hívja meg a Replace() -t a Document.Range -on a dokumentum egészére kiterjedő helyettesítéshez, vagy egy szűkebb Range -on (például egyetlen szakasz tartományán) a művelet hatókörének meghatározásához.
  • Állítsa be a FindWholeWordsOnly = true -t, hogy elkerülje a keresőkifejezés hosszabb szó részhalmazaként való egyezését.
  • Használja a IgnoreFieldCodes = true -t, ha azt szeretné, hogy a helyettesítés a megjelenített mezőeredményeken működjön, nem pedig az alapul szolgáló mezőutasítás szövegén.
  • Részesítse előnyben a IReplacingCallback -t a post-processzálással szemben, ha a helyettesítő szöveg a találati kontextustól (környező csomópont, formázás vagy pozíció) függ, ahelyett, hogy rögzített karakterlánc lenne.
  • Adja vissza a ReplaceAction.Stop -t egy visszahívásból, hogy a feltétel teljesülésekor korán befejezze a keresés/csere műveletet, ahelyett, hogy minden további egyezést feldolgozna.

Gyakori problémák

ProblémaOkaJavítás
A csere nem alkalmaz új formázástApplyFont/ApplyParagraphFormat nincs beállítva a FindReplaceOptionsÁllítsa be a megfelelő formázási tulajdonságokat az options objektumon.
Váratlanul egyezéseket észlelt a nyomon követett változtatások törléseibenIgnoreDeleted alapértelmezett értéken maradtÁllítsa be IgnoreDeleted = true a törölt revízió tartalmának kihagyásához
A reguláris kifejezés csoporthivatkozásai a helyettesítő szövegben nincsenek behelyettesítveUseSubstitutions nincs engedélyezveAdja meg a(z) UseSubstitutions = true értékét, hogy engedélyezze a(z) $1 stílusú helyettesítést
A visszahíváson alapuló helyettesítés nem áll le, amikor elvárnákA visszahívás Replace/Skip értéket ad vissza Stop helyettVissza kell adni a(z) ReplaceAction.Stop értéket a(z) Replacing() során, ha a műveletnek véget kell érnie

FAQ

Támogatja a(z) Range.Replace() a reguláris kifejezéseket?

Igen — a(z) pattern argumentum egy reguláris kifejezés, amely a tartomány szövegére van alkalmazva.

Hogyan cserélhetem le a szöveget csak egy adott szakaszon belül, nem az egész dokumentumban?

Hívja meg a(z) Replace() az adott szakasz Range elemén, a Document.Range helyett.

Hogyan tehetem a helyettesítő szöveget a megtalált részlet függővé?

Valósítsa meg a(z) IReplacingCallback függvényt, olvassa ki a találat részleteit a(z) ReplacingArgs változóból, adja ReplacingArgs.Replacement értékének a kiszámított szöveget, és adja vissza a(z) ReplaceAction.Replace értéket.

Lehet-e visszafelé keresni és cserélni a dokumentumban?

Igen — állítsa be a FindReplaceOptions.Direction értékét FindReplaceDirection.Backward.


API Reference összegzés

Osztály / MetódusLeírás
Range.Replace()Reguláris kifejezés keresés/csere egy tartományban, opcionális FindReplaceOptions paraméterrel
FindReplaceOptionsBeállítja a helyettesítési műveletekhez a találat viselkedését, formázását és szerkezeti hatókörét
FindReplaceDirectionEnum: Forward, Backward
IReplacingCallbackInterfész egyedi egyes találatok helyettesítési logikájához
ReplacingArgsEgyes találatokra vonatkozó adat, amelyet a IReplacingCallback.Replacing() kap
ReplaceActionEnum, amely a meccsenkénti kimenetet szabályozza: Replace, Skip, Stop

Lásd még:

 Magyar