当前场景
当用户试图重置密码时,
输入账号并提交。(例如:123456789)
(账号包含数据库中的电子邮件)。
然后显示"重置密码的说明已通过电子邮件发送到账号文件中的地址:123456789"
所以我正在尝试向用户显示部分电子邮件ID
如"Instructions to reset your password have been emailed to "Jo******pa@gmail.com" 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****pa@gmail.com".我正在尝试,但有什么简单的方法吗?*Java 1.4
添加:
String Str = "John.smithpa@gmail.com";
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);
您可以像这样使用regex:
String email="abcdef@xyz.com";
String str=email.replaceAll("(?<=..).(?=...*@)", "*");
System.out.println(str);
输出:
ab**ef@xyz.com
对于问题2:我能想到的是使用Regex,如下所示:
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);
}
但你要确保电子邮件的格式正确。