package charset;
import org.apache.commons.lang.StringUtils;
/**
* 输入法表情过滤,方式mysql存储不下,目前mysql只能支持1-3个字节,mysql数据库
*/
public class EmojiUtil {
/**
* 检测是否有emoji字符
*
* @param source
* @return 一旦含有就抛出
*/
private static boolean containsEmoji(String source) {
if (StringUtils.isBlank(source)) {
return false;
}
int len = source.length();
for (int i = 0; i < len; i++) {
char codePoint = source.charAt(i);
if (!isNotEmojiCharacter(codePoint)) {
//判断到了这里表明,确认有表情字符
return true;
}
}
return false;
}
/**
* 判断是否为非Emoji字符
*
* @param codePoint 比较的单个字符
* @return
*/
private static boolean isNotEmojiCharacter(char codePoint) {
return (codePoint == 0x0) || (codePoint == 0x9) || (codePoint == 0xA) || (codePoint == 0xD)
|| ((codePoint >= 0x20) && (codePoint <= 0xD7FF))
|| ((codePoint >= 0xE000) && (codePoint <= 0xFFFD))
|| ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF));
}
/**
* emoji表情替换
*
* @param source 原字符串
* @param slipStr emoji表情替换成的字符串
* @return 过滤后的字符串
*/
public static String filterEmoji(String source, String slipStr) {
if (StringUtils.isNotBlank(source)) {
return source.replaceAll("[\\ud800\\udc00-\\udbff\\udfff\\ud800-\\udfff]", slipStr);
} else {
return source;
}
}
public static void main(String[] args) {
System.out.println(containsEmoji("健康好肌肤是客户&(