你有

[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的一些想法(希望会有所帮助)。对于这种简单的字符串练习,我将推荐康斯坦丁的解决方案。简单,易读,它使您有机会处理错误情况。

09-26 06:11