2013-08-20 78 views
1

目前的情況下部分顯示JSP中的電子郵件ID。 (密碼重置),

當用戶嘗試重置其密碼

輸入賬號,並提交。 (例如:123456789)

(帳號包含數據庫中的電子郵件)。

然後顯示「重置密碼的說明已通過電子郵件發送至賬號爲123456789的文件中的地址」。

所以我試圖顯示一個部分emailID給用戶。

"Instructions to reset your password have been emailed to "Jo******[email protected]" for account number :123456789".

目前我做的是。

In Action class: (ResetPasswordAction.java) 
String email =**retriving email id** 
at end 
request.setAttribute("email", email); 
before forwarding. 


In Jsp (Display after email sent) 
<c:out value="${email}"/> 

工作正常。

現在我的問題:

1)這是正確的做法。

2)*如何用「Jo * * **[email protected]」等星號代替String(email)。我正在嘗試,但有沒有簡單的方法。 * Java 1.4中

補充:

String Str = "[email protected]"; 
    String S=Str.replaceFirst("@(.*)",""); 
    String mail=Str.replaceFirst("(.*)@",""); 
    String trim=S.substring(2, S.length()-2); 
    String star = trim.replaceAll(".", "*"); 
    String name= S.replaceAll(trim,star); 
    String Disp=name+"@"+mail; 
    System.out.println(Disp); 

回答

1

您可以使用正則表達式是這樣的:

String email="[email protected]"; 
String str=email.replaceAll("(?<=..).(?=...*@)", "*"); 
System.out.println(str); 

輸出:

ab**[email protected] 
+0

感謝您的。簡單而簡短。 –

0

問題2: 什麼我能想出來就是使用正則表達式,像如下:

  Pattern p = Pattern.compile("\\w{2}(.*)\\w{2}@.*"); 
      Matcher m = p.matcher(email); 
      if (m.find(0)) { 
       String star = m.group(1).replaceAll(".", "*"); 
       email = email.replace(m.group(1), star); 
      } 

但你要確保電子郵件格式正確。

相關問題