java判断字符串是否中文、日文
2024-10-17 07:50:06
直接上代码:
import java.io.UnsupportedEncodingException; public class StringUtil { /**
* 去掉字符串中的标点符号、空格和数字
*
* @param input
* @return
*/
public static String removePunctuation(String input) {
return input.replaceAll(" +", "").replaceAll("[\\pP\\p{Punct}]", "").replaceAll("\\d+", "");
} /**
* 判断字符串是否为中文
*
* @param input
* @return
*/
public static boolean isChinese(String input) {
return input.matches("^[\u4e00-\u9fa5]+$");
} /**
* 判断字符串是否为日文
*
* @param input
* @return
*/
public static boolean isJapanese(String input) {
try {
return input.getBytes("shift-jis").length >= (2 * input.length());
} catch (UnsupportedEncodingException e) {
return false;
}
} /**
* 将字符串转字码点
*
* @param input
* @return
*/
public static String stringToUnicode(String input) throws UnsupportedEncodingException {
StringBuffer out = new StringBuffer();
byte[] bytes = input.getBytes("unicode"); //将其byte转换成对应的16进制表示
for (int i = 0; i < bytes.length - 1; i += 2) {
out.append("\\u");
String str = Integer.toHexString(bytes[i + 1] & 0xff);
for (int j = str.length(); j < 2; j++) {
out.append("0");
}
String str1 = Integer.toHexString(bytes[i] & 0xff);
out.append(str1);
out.append(str);
}
return out.toString();
} /**
* 字码点转字符串
*
* @param unicode
* @return
*/
public static String unicodeToString(String unicode) {
StringBuffer sb = new StringBuffer();
String[] hex = unicode.split("\\\\u");
for (int i = 1; i < hex.length; i++) {
int index = Integer.parseInt(hex[i], 16);
sb.append((char) index);
}
return sb.toString();
} public static void main(String[] args) throws UnsupportedEncodingException {
String ss = "中华人民共和国";
String ss1 = "おはよう";
System.out.println(ss + " shift-jis编码字符数:" + ss.getBytes("shift-jis").length);
System.out.println(ss + " 2倍字符数:" + ss.length() * 2);
System.out.println(ss1 + "shift-jis编码字符数:" + ss1.getBytes("shift-jis").length);
System.out.println(ss1 + " 2倍字符数:" + ss1.length() * 2);
System.out.println(ss + " 字码点:" + stringToUnicode(ss));
System.out.println(ss1 + " 字码点:" + stringToUnicode(ss1));
System.out.println("\\u4e00 -\\u9fa5" + "对应的中文是:" + unicodeToString("\\u4e00") + " - " + unicodeToString("\\u9fa5")); String s = "中华人民共和国,成立了~~~";
String s1 = "1个和尚挑水喝, 2个和尚抬水喝, 3个和尚没呀没水喝";
String s2 = "あなたのお父さんとお母さんは大阪に行って、あなたのおじいさんとお婆さんはみんな東京に行って、あなたの弟の妹は北海道に行きました。";
String s3 = "1お、 2は、 3よ、 4う,呵呵";
System.out.println("开始测试:");
System.out.println(s + (isChinese(removePunctuation(s)) ? "是" : "不是") + "中文");
System.out.println(s1 + (isChinese(removePunctuation(s1)) ? "是" : "不是") + "中文");
System.out.println(s2 + (isJapanese(removePunctuation(s2)) ? "是" : "不是") + "日文");
System.out.println(s3 + (isJapanese(removePunctuation(s3)) ? "是" : "不是") + "日文");
}
}
输出:
中华人民共和国 shift-jis编码字符数:13
中华人民共和国 2倍字符数:14
おはようshift-jis编码字符数:8
おはよう 2倍字符数:8
中华人民共和国 字码点:\ufeff\u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd
おはよう 字码点:\ufeff\u304a\u306f\u3088\u3046
\u4e00 -\u9fa5对应的中文是:一 - 龥
开始测试:
中华人民共和国,成立了~~~是中文
1个和尚挑水喝, 2个和尚抬水喝, 3个和尚没呀没水喝是中文
あなたのお父さんとお母さんは大阪に行って、あなたのおじいさんとお婆さんはみんな東京に行って、あなたの弟の妹は北海道に行きました。是日文
1お、 2は、 3よ、 4う,呵呵是日文
最新文章
- 在IE11下设置SharePoint Server 2013却遇到“需要 Internet Explorer 才能使用此功能。”的解决办法
- Top 15 不起眼却有大作用的 .NET功能集
- 元素操作(sizing,尺寸获取,设值,偏移算法,坐标算法)
- elipse + maven + tomcat + springMVC环境搭建
- IOS-利用AFNetworking监听网络状态
- Android Timer用法
- #LeetCode# Container With Most Water (todo)
- asp.net 防止页面刷新或后退引起重复提交
- Chromium Graphics Update in 2014(滑动)
- Qt のEXecl
- 24.C++- 抽象类(存虚函数)、接口、多重继承
- Spring-cloud(二)注册服务提供者搭建
- ChromeDriver截图
- Dapper的基本使用,Insert、Update、Select、Delete
- 一些网站的meta标签的作用
- YQCB冲刺周第七天
- Mac下在Shell终端下使用open快速打开窗口文件夹
- nmap 端口扫描王,查看端口是否可访问,是否对外开放
- 201621123012《Java程序设计》第八周学习总结
- bootstrap-table设置某列序号自增