名字脱敏再hutool的基础上进行修改

公众号:踏歌的 Java Daily

		// 调用
		String name = "江踏歌";
		String replace = replace(name , 1, name .length(), '*');
/**
     * 替换指定字符串的指定区间内字符为固定字符
* 此方法使用{@link String#codePoints()}完成拆分替换 * * @param str 字符串 * @param startInclude 开始位置(包含) * @param endExclude 结束位置(不包含) * @param replacedChar 被替换的字符 * @return 替换后的字符串 * @since 3.2.1 */
public static String replace(CharSequence str, int startInclude, int endExclude, char replacedChar) { if (isEmpty(str)) { return str(str); } final String originalStr = str(str); int[] strCodePoints = originalStr.codePoints().toArray(); final int strLength = strCodePoints.length; if (startInclude > strLength) { return originalStr; } if (endExclude > strLength) { endExclude = strLength; } if (startInclude > endExclude) { // 如果起始位置大于结束位置,不替换 return originalStr; } // hutool中没有这一段,主要是我要实现江*歌如果用他的就是江**,所以这里传length-1,但是名字为张三就不脱敏这里给长度为1的赋值为2 if (endExclude == 1) { endExclude = 2; } final StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < strLength; i++) { if (i >= startInclude && i < endExclude) { stringBuilder.append(replacedChar); } else { stringBuilder.append(new String(strCodePoints, i, 1)); } } return stringBuilder.toString(); } /** * {@link CharSequence} 转为字符串,null安全 * * @param cs {@link CharSequence} * @return 字符串 */ public static String str(CharSequence cs) { return null == cs ? null : cs.toString(); } public static boolean isEmpty(CharSequence str) { return str == null || str.length() == 0; }

创作不易请多多支持,更多详情请关注wx工作号:xvguo1127

你可能感兴趣的:(java,maven)