Dize

2014-07-17 20 views
6

'un bazı bölümlerinde maske var Telefon numaram ve e-posta adresim var. Tam bilgi göstermek istemiyorum.
Yani Regex veya MaskFormatter kullanarak bir karakter maskeleme düşünüyorum.Dize

giriş ve arzu edilen sonuca

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

String döngü ile elde ettik. Ama ben tam olarak bunu regex veya maske kullanarak istiyorum. Lütfen bunu bilgilendirir misiniz

+3

neden regex ile yapmak istersiniz? Döngüdeki sorun nedir? –

+0

@MK Sadece farklı yollardan yapmak istemiyorum ... –

+0

neden yanlış bir şekilde yapmak istediğinizi haklı çıkarmalısınız, aksi takdirde size yardım edemeyiz (yapmamalıyız). –

cevap

17

Telefon:

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

E-posta:

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

Açıklama: Telefon \b sınır biz basamak başlangıç ​​olup olmadığını kontrol yardımcı olur

  • (diğer vardır Bunu yapmanın yolları, ama burada yapacağız.
  • (\d{2})
  • \d+
  • (\d), değiştirmede Grup 2
  • son rakamı yakalar $1 ve $2 eşleşen içeriği basamak herhangi bir sayıda (iki birinci basamak) Grup 1 için iki basamak yakalar Gruplar 1 tarafından ve 2

Açıklama: E-posta

  • \b sınırı, karakterlerin başlangıcı olduğumuzu kontrol etmemize yardımcı olur (bunu yapmanın başka yolları vardır, ancak işte bu işe yarar).
  • (\w)
  • Grup 1'e tek kelime char, yakalar
  • [^@]+ bir veya birden fazla @
  • \S+ maçlar bir veya boşluk karakter
  • (\.[^\s.]+) bir nokta yakalar değildir fazla karakter olmayan karakter ve hiçbir karakter eşleşir Grup 2
  • değiştirmede
  • , $1 ve $2 bir nokta veya boşluk içeriği Grup 1 ve 2'de
ile eşleşen içermemelidir 210
+0

+ 1 - lütfen biraz daha açıklar mısınız? teşekkürler –

+0

Açık açıklama ... regex'in açıklamasını paylaştığınız için teşekkür ederiz. –

+0

Teşekkür ederim, yardımcı oldu. :) – zx81