खोज और प्रतिस्थापन
खोज और प्रतिस्थापन
Aspose.Words FOSS for .NET नियमित-अभिव्यक्ति-आधारित खोज-बदलाव Range.Replace() के माध्यम से प्रदान करता है, जिसे FindReplaceOptions के द्वारा कॉन्फ़िगर किया जा सकता है और उन्नत परिस्थितियों के लिए, Aspose.Words.Replacing नेमस्पेस से एक कस्टम IReplacingCallback कार्यान्वयन उपलब्ध है।
बुनियादी खोज और प्रतिस्थापन
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 — यह नियंत्रित करता है कि वह विशेष मेल प्रतिस्थापित हो, जैसा का तैसा रहे, या पूरे खोज-प्रतिस्थापन प्रक्रिया को रोक दे।
युक्तियाँ और सर्वोत्तम प्रथाएँ
Document.Rangeपर दस्तावेज़-व्यापी प्रतिस्थापन के लिएReplace()को कॉल करें, या ऑपरेशन के दायरे को सीमित करने के लिए एक संकुचितRange(जैसे एकल अनुभाग की सीमा) पर कॉल करें।- लंबे शब्द के उपस्ट्रिंग के रूप में खोज शब्द से मेल न हो, इसके लिए
FindWholeWordsOnly = trueसेट करें। - जब आप चाहते हैं कि प्रतिस्थापन प्रदर्शित फ़ील्ड परिणामों पर लागू हो, न कि आधारभूत फ़ील्ड निर्देश पाठ पर, तो
IgnoreFieldCodes = trueका उपयोग करें। - जब प्रतिस्थापन पाठ स्थिर स्ट्रिंग के बजाय मेल संदर्भ (आसपास का नोड, फ़ॉर्मेटिंग, या स्थिति) पर निर्भर करता हो, तो पोस्ट-प्रोसेसिंग की तुलना में
IReplacingCallbackको प्राथमिकता दें। - किसी शर्त के पूरा होते ही खोज-प्रतिस्थापन ऑपरेशन को जल्दी समाप्त करने के लिए कॉलबैक से
ReplaceAction.Stopलौटाएँ, बजाय सभी शेष मेलों को प्रोसेस करने के।
सामान्य समस्याएँ
| समस्या | कारण | समाधान |
|---|---|---|
| प्रतिस्थापन नई स्वरूपण लागू नहीं करता | ApplyFont/ApplyParagraphFormat FindReplaceOptions पर सेट नहीं है | options ऑब्जेक्ट पर संबंधित फ़ॉर्मेटिंग प्रॉपर्टीज़ सेट करें |
| ट्रैक्ड-चेंज विलोपन के भीतर अनपेक्षित रूप से मिलान मिले | IgnoreDeleted को उसके डिफ़ॉल्ट पर छोड़ दिया गया | डिलीट किए गए रिवीजन कंटेंट को छोड़ने के लिए IgnoreDeleted = true सेट करें |
| प्रतिस्थापन पाठ में रेगेक्स समूह संदर्भ प्रतिस्थापित नहीं हुए | UseSubstitutions सक्षम नहीं है | UseSubstitutions = true सेट करें ताकि $1-शैली प्रतिस्थापन सक्षम हो सके |
| कॉलबैक-आधारित प्रतिस्थापन अपेक्षित रूप से नहीं रुकता | कॉलबैक Replace/Skip लौटाता है, जबकि Stop चाहिए था | जब संचालन समाप्त होना चाहिए, तब Replacing() से ReplaceAction.Stop लौटाएँ |
FAQ
क्या Range.Replace() नियमित अभिव्यक्तियों का समर्थन करता है?
हां — pattern तर्क एक नियमित अभिव्यक्ति है, जो रेंज के पाठ के विरुद्ध मिलाई जाती है।
मैं केवल एक विशिष्ट अनुभाग के भीतर पाठ को कैसे बदलूँ, पूरे दस्तावेज़ को नहीं?
उस अनुभाग के Range पर Replace() को कॉल करें, Document.Range के बजाय।
मैं प्रतिस्थापन पाठ को मिलान किए गए हिस्से पर निर्भर कैसे बनाऊँ?
IReplacingCallback लागू करें, मिलान विवरण को ReplacingArgs से पढ़ें, ReplacingArgs.Replacement को गणना किए गए पाठ पर सेट करें, और ReplaceAction.Replace वापस करें।
क्या खोज/प्रतिस्थापन प्रक्रिया दस्तावेज़ में पीछे की ओर खोज सकती है?
हाँ — FindReplaceOptions.Direction को FindReplaceDirection.Backward पर सेट करें।
API Reference सारांश
| क्लास / मेथड | विवरण |
|---|---|
Range.Replace() | रेंज के भीतर नियमित अभिव्यक्ति खोज/बदलाव, वैकल्पिक FindReplaceOptions के साथ |
FindReplaceOptions | बदलाव संचालन के लिए मिलान व्यवहार, स्वरूपण और संरचनात्मक दायरे को कॉन्फ़िगर करता है |
FindReplaceDirection | Enum: Forward, Backward |
IReplacingCallback | कस्टम प्रति-मैच प्रतिस्थापन तर्क के लिए इंटरफ़ेस |
ReplacingArgs | प्रति-मैच डेटा जिसे IReplacingCallback.Replacing() को भेजा जाता है |
ReplaceAction | प्रति-मैच परिणाम को नियंत्रित करने वाला Enum: Replace, Skip, Stop |