2014-07-17 7 views
6

का कुछ हिस्सा मास्क मेरे पास फोन नंबर और ईमेल पता है। मैं पूरी जानकारी नहीं दिखाना चाहता हूं।
तो मैं रेगेक्स या मास्कफॉर्मेटर का उपयोग करके मास्क को कुछ चरित्र सोच रहा हूं।मास्क स्ट्रिंग

इनपुट और वांछित परिणाम

1) 9843444556 - 98*******6 
2) [email protected] - t***@****.com 

मैं स्ट्रिंग पाश के साथ इस हासिल किया है। लेकिन वास्तव में मैं इसे रेगेक्स या मास्क का उपयोग करके करना चाहता हूं। क्या आप कृपया इसे सूचित करेंगे?

+3

आप रेगेक्स के साथ ऐसा क्यों करना चाहते हैं? लूप के साथ क्या गलत है? –

+0

@ एमके नहीं सिर्फ अलग-अलग तरीकों से करना चाहते हैं ... –

+0

आपको यह उचित ठहराना होगा कि आप इसे गलत तरीके से क्यों करना चाहते हैं, अन्यथा हम आपकी मदद नहीं कर सकते हैं (नहीं)। –

उत्तर

17

फोन:

String replaced = yourString.replaceAll("\\b(\\d{2})\\d+(\\d)", "$1*******$2"); 

ईमेल:

String replaced = yourString.replaceAll("\\b(\\w)[^@][email protected]\\S+(\\.[^\\s.]+)", "$1***@****$2"); 

स्पष्टीकरण: फोन

  • \b सीमा में मदद करता है की जाँच है कि हम अंक की शुरुआत कर रहे हैं (वहाँ अन्य रहे हैं ऐसा करने के तरीके, लेकिन यह यहां करेगा)।
  • (\d{2}) (दो प्रथम अंक) समूह 1 करने के लिए दो अंक कब्जा
  • \d+ अंक के किसी भी संख्या से मेल खाता है
  • (\d), समूह 2
  • करने के लिए अंतिम अंकों कब्जा प्रतिस्थापन में $1 और $2 सामग्री से मेल खाता शामिल समूह 1 से और 2

स्पष्टीकरण: ईमेल

  • \b सीमा यह जांचने में सहायता करती है कि हम पात्रों की शुरुआत हैं (ऐसा करने के अन्य तरीके हैं, लेकिन यहां यह करेंगे)।
  • (\w) समूह 1 करने के लिए एक शब्द चार कब्जा
  • [^@]+ एक या अधिक वर्ण कि @
  • \S+ मैचों में एक या अधिक वर्ण कि खाली स्थान के वर्ण
  • (\.[^\s.]+) एक डॉट कब्जा नहीं कर रहे हैं नहीं कर रहे हैं और किसी भी वर्ण हैं कि मेल खाता है एक डॉट या समूह 2
  • प्रतिस्थापन में, $1 और $2 करने के लिए स्पेस सामग्री समूह 1 और 2
के अनुरूप होते नहीं 210
+0

+ 1 - क्या आप इसके बारे में कुछ और बताएंगे? धन्यवाद –

+0

स्पष्ट स्पष्टीकरण ... रेगेक्स स्पष्टीकरण –

+0

साझा करने के लिए धन्यवाद, धन्यवाद, इससे मदद मिली। :) – zx81

संबंधित मुद्दे