普通的substring不能正确截取带Emoji的字符串会导致乱码,这个工具类可以截取。
基本可用,个别情况比如这类“1️⃣”组合Emoji还是会错,据说这个emoji是由:'1'、一个变体选择器和'⃣'组成的。
也可以用str.substring(str.offsetByCodePoints(0, start), str.offsetByCodePoints(0, end))
但是实测发现现在的实现速度更快一些。
package util;
/**
* Emoji字符串工具类
*
* @author fantasmic@qq.com
* @version 1.0.0 2023-12-21
*/
public class EmojiStringUtil {
private EmojiStringUtil() {
}
/**
* emoji字符串脱敏 - 仅前后各保留一个原文,中间替换为“*”
* @param emojiStr 原始字符串
* @param keepLength 是否保持原长度,保持原长度时中间隐去几个字符就加几个“*”,否则只加一个“*”
* Examples:
* <blockquote><pre>
* masking("hamburger", true) returns "h*******r"
* masking("hamburger", false) returns "h*r"
* </pre></blockquote>
* @return
*/
public static String masking(String emojiStr, boolean keepLength) {
if (emojiStr==null || emojiStr.isEmpty()) {
return "**";
}
int realStringLength =

最低0.47元/天 解锁文章
706

被折叠的 条评论
为什么被折叠?



