Java原生隐藏字符-工具类

package com.seesun2012.common.util;

/**

  • 隐藏字符-工具类
  • @author seesun2012@163.com

*/
public class HiddenChartUtil {

/**
 * 加密银行卡号,返回值如:6228 48** **** ***8 888
 *
 * @param str			原始字符串
 * @param startIndex	开始位置(显示)
 * @param endIndex		结束位置(显示)
 * @param n				每n个字符隔开
 * @param encryptionStr	指定加密字符,如"*"	--米字符号
 * @param repStr		添加分隔的符号,如:“ ” -- 空格
 * @return
 */
public static String replaceCardId(String str, Integer startIndex, Integer endIndex, Integer n, String encryptionStr, String repStr){
	return spaceReplace(hiddenStr(str, startIndex, endIndex, encryptionStr), n, repStr);
}


/**
 * 每间隔n个字符插入特定字符,默认如:6228 4888 8888 8888 888 ...
 *
 * @param str		原始字符
 * @param n			每n个字符隔开
 * @param repStr	添加分隔的符号,如:“ ” -- 空格
 * @return
 */
public static String spaceReplace(String str, Integer n, String repStr){
	if (n <= 0){
		n = 4;
	}
	if (null == repStr){
		repStr = "";
	}
	String newStr = "";
	char[] bankArray = str.toCharArray();
	for(int i=0;i<bankArray.length;i++){
	    if(i%n==0 && i>0){
	    	newStr += repStr;
	    }
	    newStr += bankArray[i];
	}
	return newStr;
}


/**
 * 隐藏指定间隔字符,默认如:622848************8888
 *
 * @param str			原始字符串
 * @param startIndex	开始位置
 * @param endIndex		结束位置
 * @param encryptionStr	指定加密字符
 * @return
 */
public static String hiddenStr(String str, Integer startIndex, Integer endIndex, String encryptionStr){
	if (str.length()<=1) {
		return str;
	}
	if (null == encryptionStr){
		encryptionStr = "*";
	}
	String xxStr = "";
	String lenStr = str.trim().substring(startIndex, str.length()-endIndex);
	for (int i = 0, len = lenStr.length(); i < len; i++) {
		xxStr += encryptionStr;
	}
	xxStr = str.replaceFirst(lenStr, xxStr);
	return xxStr;
}

}

posted @ 2018-06-22 17:44  seesun2012  阅读(1431)  评论(0编辑  收藏  举报