टेक्स्ट और रोजमर्रा के टूल · टेक्स्ट टूलकिट
ट्रिम, डी-डुप्लिकेट, सॉर्ट: टेक्स्ट क्लीनअप चरणों का क्रम क्यों मायने रखता है
· यह क्यों मायने रखती है
पाठ-सफाई डुप्लिकेट-पंक्तियाँ छँटाई
दो पंक्तियाँ जो केवल अनुगामी स्थान से भिन्न होती हैं, तब तक डुप्लिकेट नहीं होतीं जब तक आप उन्हें ट्रिम नहीं करते; यह पोस्ट बताती है कि ट्रिम → खाली हटाएं → डी-डुप्लिकेट → सॉर्ट सही क्रम क्यों है और प्रत्येक चरण को गिनती के साथ कैसे सत्यापित किया जाए।
डी-डुप्लिकेट सूची जिसमें अभी भी डुप्लिकेट थे - कैसे एक अदृश्य अनुगामी स्थान एक अनुभवहीन डी-डुप्लिकेट को हरा देता है
एक सदस्यता सचिव तीन साइन-अप निर्यातों को मर्ज करता है और डुप्लिकेट हटाएँ चुनने के बाद भी एक ही पते के लिए दो प्रविष्टियाँ देखता है। एक पंक्ति पते के तुरंत बाद समाप्त होती है, जबकि दूसरी में स्प्रेडशीट सेल से कॉपी किया गया पिछला स्थान होता है। वे स्क्रीन पर समान दिखते हैं, लेकिन तुलना में दो अलग-अलग तार मिलते हैं, इसलिए दोनों जीवित रहते हैं।
उसी क्लीनअप बटन को दूसरे क्रम में चलाने से वह बेमेल हल होने के बजाय छिप सकता है। पहले क्रमबद्ध करने से निकट-डुप्लिकेट को दृश्य समीक्षा के लिए एक साथ रखा जा सकता है, फिर भी यह उन्हें समान नहीं बनाता है। भरोसेमंद अनुक्रम लाइन किनारों को सामान्य बनाना, बिना सामग्री वाली लाइनों को त्यागना, सटीक दोहराव को हटाना और यह तय करने के बाद ही क्रमबद्ध करना है कि स्रोत क्रम का कोई अर्थ नहीं है।
चरण एक, लाइनों को ट्रिम करें - अग्रणी और अनुगामी रिक्त स्थान को हटा दें ताकि समान प्रविष्टियाँ समान हो जाएं
ट्रिम लाइनों से शुरू करें। कार्यान्वयन पाठ को CRLF, LF या अकेली CR लाइन ब्रेक पर विभाजित करता है, प्रत्येक पंक्ति में JavaScript ट्रिमिंग लागू करता है, और लाइनों को फिर से LF के साथ जोड़ता है। प्रत्येक पंक्ति से अग्रणी और अनुगामी रिक्त स्थान गायब हो जाता है, इसलिए डुप्लिकेट का पता लगाने से पहले ` member@example.test ` और `member@example.test` एक ही सटीक पाठ बन जाते हैं।
सामान्य टेक्स्ट रिपेयर की तुलना में ट्रिमिंग जानबूझकर संकीर्ण है। यह किसी नाम के अंदर रिक्त स्थान नहीं बदलता, बड़े अक्षरों की मरम्मत नहीं करता या यह तय नहीं करता कि दो अलग-अलग लिखे गए पते एक ही व्यक्ति के हैं। वह संयम इस पहले पास को समीक्षा योग्य बनाता है: केवल लाइन-एज व्हाइटस्पेस बदलता है, जबकि प्रविष्टि में प्रत्येक दृश्यमान चरित्र सचिव के निरीक्षण के लिए उपलब्ध रहता है।
चरण दो, खाली पंक्तियाँ हटाएँ - खाली पंक्तियाँ छँटाई से पहले क्यों जानी चाहिए, बाद में नहीं
इसके बाद खाली लाइनें हटाएं चुनें। एक पंक्ति को खाली माना जाता है जब इसे ट्रिम करने से एक खाली स्ट्रिंग उत्पन्न होगी, इसलिए रिक्त स्थान या टैब वाली पंक्तियाँ दृश्यमान रिक्त पंक्तियों के साथ गायब हो जाती हैं। सॉर्टिंग से पहले ऐसा करने से रिक्त प्रविष्टियों को रोस्टर के एक छोर पर ले जाने से रोका जाता है और सॉर्ट ऑपरेशन से अस्पष्टीकृत आउटपुट के लिए गलती की जाती है।
यह दूसरा पास बाद की गणनाओं को भी स्पष्ट करता है। स्रोत को असेंबल करते समय तीन आयातित सूचियों के बीच एक रिक्त विभाजक उपयोगी है, लेकिन यह सदस्य रिकॉर्ड नहीं है। एक बार जब सूचियाँ संयुक्त हो जाती हैं और उनकी सीमाएँ मायने नहीं रखती हैं, तो उन विभाजकों को हटाने से प्रत्येक शेष पंक्ति एक उम्मीदवार रोस्टर प्रविष्टि के अनुरूप हो जाती है जिसकी तुलना की जा सकती है।
चरण तीन, डुप्लिकेट हटाएं - पहली घटना बनी रहती है, बाद की प्रतियां चली जाती हैं, और जो बचता है उसका क्रम अपरिवर्तित रहता है
अब रिमूव डुप्लिकेट चलाएँ। बटन डिफ़ॉल्ट के साथ, तुलना केस-संवेदी है और कोई अन्य ट्रिम नहीं करती है। फ़ंक्शन ऊपर से नीचे तक चलता है, देखी गई प्रत्येक पंक्ति को संग्रहीत करता है, पहली घटना रखता है और प्रत्येक बाद के सटीक मिलान को छोड़ देता है। इसलिए इस ऑपरेशन के बाद सभी बरकरार लाइनों का सापेक्ष क्रम वही रहता है।
पहली प्रति रखना तब मायने रखता है जब स्रोत आदेश में कमजोर प्राथमिकता होती है, जैसे कि प्राथमिक पंजीकरण निर्यात को पूरक सूचियों से पहले रखना। यह प्रतिस्पर्धी पंक्तियों से विवरण मर्ज नहीं करता है, और `Alex@example.test` `alex@example.test` से अलग रहता है। यह मानने के बजाय कि प्रत्येक मामले में परिवर्तन हानिरहित पहचान सामान्यीकरण है, उन अंतरों की मैन्युअल रूप से समीक्षा करें।
चरण चार, क्रमबद्ध करें - केवल यदि क्रम मायने नहीं रखता है, तो परिणाम को स्कैन करना आसान हो जाएगा
डुप्लिकेट का निपटारा होने के बाद ही क्रमबद्ध करें, और केवल तब जब वर्णानुक्रमिक प्रस्तुति आयात आदेश से अधिक मूल्यवान हो। सॉर्ट ए-जेड लाइनों की प्रतिलिपि बनाता है और ब्राउज़र लोकेल, केस-असंवेदनशील संवेदनशीलता और संख्यात्मक तुलना सक्षम के साथ उनकी तुलना करता है। इसलिए संख्याओं वाली प्रविष्टियाँ सरल वर्ण-दर-वर्ण अनुक्रम के बजाय प्राकृतिक संख्यात्मक क्रम का अनुसरण कर सकती हैं।
रूपरेखा में सॉर्टिंग को केवल एक आसान स्कैनिंग सहायता के रूप में वर्णित किया गया है, लेकिन कार्यान्वयन में रिकॉर्डिंग के लायक विशिष्ट तुलना व्यवहार है। परिणाम ब्राउज़र लोकेल पर निर्भर हो सकते हैं, और समान दिखने वाले केस वेरिएंट कार्यान्वयन-निर्भर सापेक्ष प्लेसमेंट को बनाए रख सकते हैं। यदि सूची क्रम आगमन समय, प्राथमिकता या मतदान की स्थिति को रिकॉर्ड करता है, तो छँटाई छोड़ें और डुप्लिकेट किए गए अनुक्रम को संरक्षित करें।
चरण चार, स्थानीय-जागरूक, केस-असंवेदनशील और संख्यात्मक तुलना के साथ क्रमबद्ध करें, लेकिन केवल तब जब स्रोत आदेश डिस्पोजेबल हो
लाइव लाइन्स गिनती का उपयोग चालू जांच के रूप में करें, न कि इस प्रमाण के रूप में कि प्रत्येक शेष व्यक्ति अद्वितीय है। प्रारंभिक पेस्ट के बाद, खाली-लाइन हटाने के बाद और डुप्लिकेट हटाने के बाद गिनती रिकॉर्ड करें। ट्रिमिंग सामान्यतः गिनती को अपरिवर्तित छोड़ देती है; रिक्त स्थान इसे छोड़ी गई पंक्तियों की संख्या से कम कर देते हैं; डिडुप्लीकेशन इसे बाद की सटीक प्रतियों की संख्या से कम कर देता है।
एक अनुगामी लाइन ब्रेक एक अंतिम खाली लाइन बनाता है क्योंकि लाइन विभाजन उस ब्रेक के बाद पाठ को संरक्षित करता है। इससे आरंभिक संख्या अपेक्षा से एक अधिक दिखाई दे सकती है जब तक कि खाली पंक्तियाँ हटाएँ नहीं चलतीं। वास्तविक रोस्टर पंक्तियों के साथ-साथ संख्या की तुलना करें, क्योंकि दो अलग-अलग प्रविष्टियाँ अभी भी एक व्यक्ति को संदर्भित कर सकती हैं और एक समान साझा पता दो लोगों का प्रतिनिधित्व कर सकता है।
यह याद रखते हुए लाइन की गिनती जांचें कि पिछली लाइन ब्रेक एक खाली अंतिम लाइन बनाता है
मान लीजिए कि स्रोत एक में `Mina@example.test` है, स्रोत दो में वही पता है जिसके बाद रिक्त स्थान है, और स्रोत तीन में केवल रिक्त स्थान वाली दो पंक्तियों के नीचे साफ़ पता दोहराया गया है। सभी तीन ब्लॉकों को एक साथ चिपकाएँ और लाइन गिनती नोट करें। पहले ट्रिम करें ताकि दूरी वाली कॉपी मेल खाए, फिर खाली लाइनें हटा दें ताकि विभाजक अब रोस्टर उम्मीदवारों के रूप में न गिने जाएं।
अगला डुप्लिकेट हटाएँ चुनें; पहली साफ़ मीना पंक्ति बनी रहती है और बाद की दो प्रतियाँ गायब हो जाती हैं। क्रमबद्ध A-Z चुनने से पहले कम की गई गिनती पढ़ें और आस-पास की प्रविष्टियों को स्कैन करें। प्रत्येक परिवर्तन पिछले एडिटर पाठ को इतिहास स्टैक पर धकेलता है, इसलिए जब गिनती अप्रत्याशित रूप से गिरती है या स्रोत क्रम महत्वपूर्ण साबित होता है तो पूर्ववत एक समय में एक चरण को पुनर्स्थापित कर सकता है।
टेकअवे - टेक्स्ट टूलकिट के बटन आपके द्वारा चुने गए क्रम में लागू किए गए एकल रूपांतरण हैं, और अनुशंसित क्रम पेज पर प्रलेखित है
टेक्स्ट टूलकिट एक बंडल क्लीनअप कमांड के बजाय स्वतंत्र बटन को उजागर करता है। वह डिज़ाइन ऑर्डर को उपयोगकर्ता की ज़िम्मेदारी बनाता है और प्रत्येक परिवर्तन को देखने योग्य भी बनाता है। हालाँकि टूलबार खाली लाइनों को हटाने और लाइनों को ट्रिम करने से पहले डुप्लिकेट हटाएं प्रदर्शित करता है, मिश्रित निर्यात के लिए सुरक्षित वर्कफ़्लो ट्रिम लाइनें, खाली लाइनें हटाएं, डुप्लिकेट हटाएं, फिर वैकल्पिक सॉर्टिंग है।
उस ऑर्डर को एक छोटी डेटा-क्लीनिंग पाइपलाइन के रूप में मानें: तुलना जो देखती है उसे सामान्य करें, बिना सामग्री वाले रिकॉर्ड हटाएं, सटीक दोहराव को संक्षिप्त करें, और केवल अंतिम सेट को पुनर्व्यवस्थित करें। प्रत्येक सीमा पर गिनती और पूर्ववत उपलब्ध रखें। परिणाम एक सत्यापित सदस्यता डेटाबेस नहीं है, लेकिन यह एक साफ़-सुथरा, ऑडिट करने योग्य रोस्टर है जो पहचान जांच के लिए तैयार है जो टेक्स्ट फ़ंक्शन निष्पादित नहीं कर सकता है।