ऊपर दिए गए समाधान बेहतर हैं, खासकर अगर जावा का उपयोग कर रहे हैं, और 10 से अधिक अंकों के साथ अधिक संख्याओं का सामना कर रहे हैं जैसे कि अंतर्राष्ट्रीय कोड उपसर्ग या अन्य एक्सटेंशन नंबर। यह समाधान बुनियादी है (मैं रेगेक्स की दुनिया में एक शुरुआत हूं) और यूएस फोन नंबरों को ध्यान में रखकर बनाया गया है और यह केवल 10 नंबरों वाले स्ट्रिंग्स के लिए उपयोगी है, जिसमें शायद कुछ फॉर्मेटिंग कैरेक्टर हैं, या शायद कोई भी फॉरमेटिंग कैरेक्टर नहीं हैं (सिर्फ 10 नंबर )। जैसे कि मैं केवल अर्ध-स्वचालित अनुप्रयोगों के लिए इस समाधान को पुनः प्राप्त करूंगा। मैं व्यक्तिगत रूप से वर्णों को फ़ॉर्मेट किए बिना केवल 10 नंबरों के रूप में संख्याओं को संग्रहीत करना पसंद करता हूं, लेकिन सामान्य रूप से सामान्य लोगों और एप्लिकेशन / फोन को पहचानने के लिए फोन नंबर को मानक प्रारूप में बदलने या साफ करने में सक्षम होना चाहते हैं।
मैं इस पोस्ट के पार आया, जिसे मैं एक टेक्स्ट क्लीनर ऐप के साथ उपयोग कर सकता था जिसमें PCRE Regex क्षमताएं हैं (लेकिन कोई जावा फ़ंक्शन नहीं है)। मैं यहां उन लोगों के लिए पोस्ट करूंगा जो एक सरल शुद्ध रेगेक्स समाधान का उपयोग कर सकते थे जो विभिन्न प्रकार के पाठ संपादकों, क्लीनर, विस्तारकों या यहां तक कि कुछ क्लिपबोर्ड प्रबंधकों में काम कर सकते थे। मैं व्यक्तिगत रूप से उदात्त और TextSoap का उपयोग करता हूं। यह समाधान टेक्स्ट साबुन के लिए बनाया गया था क्योंकि यह मेनू बार में रहता है और एक ड्रॉप-डाउन मेनू प्रदान करता है जहां आप कर्सर द्वारा या क्लिपबोर्ड में क्या चुना जाता है, इस पर पाठ हेरफेर क्रियाओं को ट्रिगर कर सकते हैं।
मेरा दृष्टिकोण अनिवार्य रूप से दो प्रतिस्थापन / खोज है और रेगीक्स को प्रतिस्थापित करता है। प्रत्येक प्रतिस्थापन खोज और प्रतिस्थापित में दो रेगेक्स शामिल हैं, एक खोज के लिए और एक प्रतिस्थापन के लिए।
प्रतिस्थापन / खोज और बदलें # 1
- पहले प्रतिस्थापन / खोज और स्ट्रिप्स नॉन-न्यूमेरिक नंबरों को एक 10-अंकीय संख्या से 10-अंकीय स्ट्रिंग में बदलें।
पहला प्रतिस्थापन / खोज Rexx:\D
- यह खोज स्ट्रिंग उन सभी वर्णों से मेल खाती है जो एक अंक नहीं है।
पहला प्रतिस्थापन / Regex बदलें : "" (कुछ भी नहीं, एक जगह भी नहीं)
- स्थानापन्न फ़ील्ड को पूरी तरह से खाली छोड़ दें, रिक्त स्थान सहित कोई भी सफेद स्थान मौजूद नहीं होना चाहिए। इसके परिणामस्वरूप सभी मिलान किए गए गैर-अंक वर्ण हटा दिए जाएंगे। आपको इस ऑपरेशन से पहले 10 अंकों + फ़ॉर्मेटिंग वर्णों के साथ जाना चाहिए और 10 अंकों वाले फ़ॉर्मेटिंग वर्णों के साथ बाहर आना चाहिए।
प्रतिस्थापन / खोज और बदलें # 2
- दूसरा प्रतिस्थापन / खोज और ऑपरेशन के खोज भाग को क्षेत्र कोड
$1, तीन संख्याओं के दूसरे सेट के लिए एक कैप्चर समूह $2और चार संख्याओं के अंतिम सेट के लिए अंतिम कैप्चर समूह के लिए कैप्चर करता है $3। ऑपरेशन के स्थानापन्न हिस्से के लिए regex अंकों के कैप्चर किए गए समूह के बीच यूएस फोन नंबर फॉर्मेटिंग सम्मिलित करता है।
दूसरा प्रतिस्थापन / खोज Rexx:(\d{3})(\d{3})(\d{4})
दूसरा प्रतिस्थापन / Regex बदलें :\($1\) $2\-$3
बैकस्लैश \विशेष वर्ण निकल जाता है (, ), (<-whitespace), और -के बाद से हम कैप्चर समूहों में हमारे पर कब्जा कर लिया संख्याओं के बीच उन्हें डालने कर रहे हैं $1, $2, और $3अमेरिका फोन नंबर स्वरूपण प्रयोजनों के लिए।
TextSoap में मैंने एक कस्टम क्लीनर बनाया जिसमें दो प्रतिस्थापन ऑपरेशन क्रियाएं शामिल हैं, इसलिए व्यवहार में यह स्क्रिप्ट को निष्पादित करने के लिए समान लगता है। मुझे यकीन है कि इस समाधान में सुधार किया जा सकता है लेकिन मुझे उम्मीद है कि जटिलता काफी बढ़ जाएगी। इस समाधान के एक उन्नत संस्करण को एक सीखने के अनुभव के रूप में स्वागत किया जाता है यदि कोई भी इसे जोड़ना चाहता है।