话不多说,上代码:
提取英文部分
public static String extractEn(String s1) {
StringBuilder sb = new StringBuilder(s1);
IntStream.range(0, s1.length()).forEach(k -> {
char c = sb.charAt(k);
if (!isChinese(c))
sb.append(c);
});
return sb.toString().substring(s1.length(), sb.length());
}
其中调用了一个网上的函数,判断是不是中文
private static boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
return ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS;
}
另:判断字符是不是汉字
public static boolean isChineseChar(char c) {
return String.valueOf(c).matches("[\u4e00-\u9fa5]");
}