חיפוש והחלפה

חיפוש והחלפה

Aspose.Words FOSS for .NET מספק חיפוש והחלפה מבוססי ביטוי רגולרי דרך Range.Replace(), ניתן להגדיר באמצעות FindReplaceOptions ו, לתרחישים מתקדמים, מימוש מותאם אישית של IReplacingCallback מהמרחב השם Aspose.Words.Replacing.


חיפוש והחלפה בסיסיים

Range.Replace(pattern, replacement) מבצע חיפוש והחלפה מבוססי ביטוי רגולרי על פני הטווח — כל המסמך, כאשר הוא נקרא על Document.Range. העומס של Replace(pattern, replacement, options) מקבל אובייקט FindReplaceOptions לשליטה מדויקת יותר: MatchCase ו-FindWholeWordsOnly מתאימים את התנהגות ההתאמה, Direction (ערך FindReplaceDirection, Forward או Backward) שולט בכיוון החיפוש, ו-ApplyFont / ApplyParagraphFormat מאפשרים להחלפה לשאת עיצוב חדש במקום רק טקסט חדש.


אפשרויות מודעות לעיצוב ומבניות

FindReplaceOptions כולל מספר דגלים הקובעים אילו מרכיבי מסמך התאמה עשויה לחצות או להתעלם מהם: IgnoreDeleted ו-IgnoreInserted שולטנים האם תוכן שינוי במעקב נכלל בהתאמה, IgnoreFields ו-IgnoreFieldCodes קובעים האם מחפשים את טקסט תוצאת השדה וקודי השדה, IgnoreFootnotes מוחר את תוכן ההערות השוליים/הערות הסיום, ו-IgnoreStructuredDocumentTags ו-IgnoreShapes מוחרים שליטה על תוכן ובטקסט של צורה בהתאמה. UseSubstitutions מאפשר תחביר החלפה של ביטוי רגולרי (כמו $1) במחרוזת ההחלפה. LegacyMode ו-UseLegacyOrder משמרים את התנהגות ההתאמה הישנה לתאימות עם מסמכים שעובדו על-ידי הלוגיקה הקודמת.


לוגיקה מותאמת להחלפה עם IReplacingCallback

להגיון החלפה שלא ניתן לבטא כמחרוזת החלפה קבועה, מימוש IReplacingCallback ושיטת Replacing(args) היחידה שלו, ואז הקצאת המימוש ל-FindReplaceOptions.ReplacingCallback (או העברתו ישירות לבונה FindReplaceOptions(replacingCallback)). הפונקציה הישירה מקבלת אובייקט ReplacingArgs עבור כל התאמה, חושפת את Match (התאמת הביטוי הרגולרי הבסיסית), MatchNode / MatchEndNode (צמתי המסמך המכילים את ההתאמה), MatchOffset, ו-מחרוזת Replacement שניתנת להגדרה. החזרת ערך ReplaceAction מהפונקציה — Replace, Skip או Stop — שולטת האם ההתאמה המסוימת מוחלפת, נשארת ללא שינוי, או עוצרת את כל פעולת החיפוש/החלפה.


טיפים ושיטות עבודה מומלצות

  • הפעל Replace() על Document.Range להחלפה ברמת כל המסמך, או על Range מצומצם יותר (כגון טווח של קטע יחיד) כדי למקד את הפעולה.
  • הגדר את FindWholeWordsOnly = true כדי למנוע התאמת מונח חיפוש כתת-מחרוזת של מילה ארוכה יותר.
  • השתמש ב-IgnoreFieldCodes = true כאשר אתה רוצה שההחלפה תפעל על תוצאות השדה המוצגות, ולא על הטקסט המודריך של השדה הבסיסי.
  • העדף את IReplacingCallback על פני עיבוד לאחרי כאשר טקסט ההחלפה תלוי בהקשר ההתאמה (צומת סביבתית, עיצוב או מיקום) ולא במחרוזת קבועה.
  • החזר את ReplaceAction.Stop מפונקציית-callback כדי לסיים את פעולת החיפוש/החלפה מוקדם כאשר תנאי מתקיים, במקום לעבד כל התאמה שנשארה.

בעיות נפוצות

בעיהסיבהתיקון
ההחלפה אינה מחילה עיצוב חדשApplyFont/ApplyParagraphFormat לא הוגדר ב-FindReplaceOptionsהגדר את מאפייני העיצוב הרלוונטיים על אובייקט options
התאמות נמצאו בתוך מחיקות של שינוי במעקב באופן בלתי צפויIgnoreDeleted נשאר בערך ברירת המחדלהגדר אתIgnoreDeleted = trueכדי לדלג על תוכן גרסה שנמחק
הפניות לקבוצות Regex בטקסט ההחלפה לא מוחלפותUseSubstitutions אינו מופעלהגדר UseSubstitutions = true כדי להפעיל החלפה בסגנון $1
ההחלפה מבוססת-קריאה חוזרת אינה נעצרת כאשר מצופההקריאה החוזרת מחזירה Replace/Skip במקום Stopהחזר ReplaceAction.Stop מ־Replacing() כאשר הפעולה צריכה להסתיים

FAQ

האם Range.Replace() תומך בביטויים רגולריים?

כן — הפרמטר pattern הוא ביטוי רגולרי, המותאם לטקסט של הטווח.

איך אני מחליף טקסט רק בתוך קטע ספציפי, ולא בכל המסמך?

קרא ל-Replace() על Range של הקטע הזה במקום Document.Range.

איך לגרום לטקסט ההחלפה להיות תלוי במה שנמצא?

מימוש IReplacingCallback, קרא את פרטי ההתאמה מ-ReplacingArgs, הגדר את ReplacingArgs.Replacement לטקסט המחושב, והחזר את ReplaceAction.Replace.

האם ניתן לבצע חיפוש והחלפה לאחור במסמך?

כן — הגדר את FindReplaceOptions.Direction ל-FindReplaceDirection.Backward.


סיכום API Reference

מחלקה / שיטהתיאור
Range.Replace()חיפוש/החלפה באמצעות ביטוי רגולרי על פני טווח, עם FindReplaceOptions אופציונלי
FindReplaceOptionsמגדיר את התנהגות ההתאמה, העיצוב והטווח המבני לפעולות החלפה
FindReplaceDirectionEnum: Forward, Backward
IReplacingCallbackממשק ללוגיקה מותאמת אישית של החלפה לכל התאמה
ReplacingArgsנתונים לכל התאמה המועברים ל-IReplacingCallback.Replacing()
ReplaceActionEnum שמגדיר את תוצאת כל התאמה: Replace, Skip, Stop

ראה גם

 עברית