高效率保留首尾字符,中间全部变为星号

    因业务需求接口需要对返回银行卡保留首6位,尾4位,中间以星号代替。本着不重复造轮子原则,上网找了几种写法,测试后感觉写法效率不高,于是自己写了一遍,用字符数组按位替换。

代码如下:

/**
 * 对字符加星号处理:除前面几位和后面几位外,其他的字符以星号代替
 *
 * @param content
 *            传入的字符串
 * @param frontNum
 *            保留前面字符的位数
 * @param endNum
 *            保留后面字符的位数
 * @return 带星号的字符串
 */
public static String replaceString2Star(String content, int frontNum, int endNum) {
    if (content == null || content.trim().isEmpty())
        return content;

    int len = content.length();

    if (frontNum >= len || frontNum < 0 || endNum >= len || endNum < 0)
        return content;

    if (frontNum + endNum >= len)
        return content;


    int beginIndex = frontNum;
    int endIndex = len - endNum;
    char[] cardChar = content.toCharArray();

    for (int j = beginIndex; j < endIndex; j++) {
        cardChar[j] = '*';
    }

    return new String(cardChar);
}
 

与以下两种写法比较了效率,1.正则表达式(http://blog.csdn.net/kouwoo/article/details/42918887),2.字符串替换(http://blog.csdn.net/qin20082012/article/details/52371615),可以看到运行一千万次,性能比正则写法提高60多倍,比字符串替换提高8倍多,并且运行次数增加性能差异越大。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值