你有
[email protected]
结果应该是:
******@domain.com
目前,我正在以这种方式进行操作:
public static String removeUserFromEmail(String email) {
StringBuffer sbEmail = new StringBuffer(email);
int start = sbEmail.indexOf("@");
sbEmail.delete(0, start);
return "******" + sbEmail.toString();
}
有没有更简单或更优雅的东西?
最佳答案
尽管我有两个建议,但该解决方案没有错:
1)使用StringBuilder代替StringBuffer,除非您需要同步多个线程之间的访问。与StringBuffer相关的性能损失对此应用程序可能是不必要的。
2)StringBuilder / Buffer的好处之一是避免过多的字符串连接。
您的返回行将Buffer转换为字符串,然后进行连接。我可能会这样做:
int start = email.indexOf("@");
if (start < 0) {
return ""; // pick your poison for the error condition
}
StringBuilder sbEmail = new StringBuilder(email);
sbEmail.replace(0, start, "******");
return sbEmail.toString();
仅供参考-我的解决方案实际上只是关于您当前使用StringBuffer的一些想法(希望会有所帮助)。对于这种简单的字符串练习,我将推荐康斯坦丁的解决方案。简单,易读,它使您有机会处理错误情况。