java判断字符串是否中文、日文
直接上代码:
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う,呵呵是日文
java判断字符串是否中文、日文的更多相关文章
- Java判断字符串是中文还是英文
在做开发的时候我们经常需要用到根据某个字符或者字符串来判断其是中文还是英文,从而做相应的处理,其实不难,大多数人们都是用到正则来判断的,下面小贝就给大家分享一下Java判断字符串是中文还是英文 推荐文 ...
- java 判断字符串中是否包含中文并过滤掉中文
java判断字符串中是否包含中文并过滤掉中文 CreateTime--2017年9月6日08:48:59 Author:Marydon 1.判断字符串中是否包含中文方法封装 /** * 判断字符串 ...
- Java_util_02_Java判断字符串是中文还是英文
做微信开发,使用百度翻译API时,需要指定译文的语种.这就需要我们判断待翻译内容是中文还是英文,若是中文,则翻译成英文,若是英文则翻译成中文. 方法一:字符与字节的长度 依据:一个中文占两个字节,一个 ...
- java判断字符串是否为空的方法总结
http://blog.csdn.net/qq799499343/article/details/8492672 以下是java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观 ...
- java判断字符串是否回文
java判断字符串是否回文 /** * java判断字符串是否回文<br><br> * 基本思想是利用字符串首尾对应位置相比较 * * @author InJavaWeTrus ...
- Java 判断字符串是否为空的四种方法、优缺点与注意事项
以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s));方法二: ...
- java判断字符串内容
java判断字符串是否全为数字 String str = "032";boolean isNum = str.matches("[0-9]+"); java判断 ...
- Java判断字符串是否符合yyyyMMdd日期格式
Java判断字符串是否符合yyyyMMdd日期格式 代码: /** * 判断参数的格式是否为“yyyyMMdd”格式的合法日期字符串 * */ public static boolean isVali ...
- java - 判断 字符串是否为空
java - 判断 字符串是否为空 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低.1:if(s == null || s.equals(""));方法二: 比较字符 ...
随机推荐
- 修改gitlab配置文件指定服务器ip和自定义端口:
修改gitlab配置文件指定服务器ip和自定义端口: vim /etc/gitlab/gitlab.rb gitlab-ctl reconfiguregitlab-ctl restart 查看与rpm ...
- 基于GitLab CI搭建Golang自动构建环境
基于GitLab CI搭建Golang自动构建环境 Golang发布遇到的问题 对于golang的发布,之前一直没有一套规范的发布流程,来看看之前发布流程: 方案一 开发者本地环境需要将环境变量文件改 ...
- Python基本的语法知识
1. 编程语言的介绍 低级语言:机器语言--------计算机内部只能接受二进制代码,故用0或者1表示的指令称为机器指令,全部的机器指令构成了计算机的机器语言. 汇编语言--------实质上跟机器语 ...
- 关于创建Django表单Forms继承BaseForm的问题
在创建Django表单时,因为需要验证用户输入的验证码是否正确,因此需要在session里提取当前验证码的值和POST提交过来的值进行比对,如图: form.py from django import ...
- vscode 输出面板字符编码问题
默认的输出中文会显示成乱码,需要在vscode内部的终端中输入 chcp 65001 缺点是需要每次打开vscode进行激活,另一种方式是在vscode的首选项中进行配置: "termina ...
- BZOJ4706 B君的多边形 (超级卡特兰数/施罗德数)
题目 权限题QAQ 题解 超级卡特兰数/施罗德数 CODE #include <bits/stdc++.h> using namespace std; const int MAXN = 1 ...
- sql server 子查询 和exists使用
概述 子查询的概念: 当一个查询是另一个查询的条件时,称之为子查询.子查询可以嵌套在主查询中所有位置,包括SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY. 外面的 ...
- MAC OS系统替换homebrew使用阿里云的镜像源
MAC OS系统替换homebrew使用阿里云的镜像源 2019-03-03 15:13:42 南通SEO 阅读数 2024更多 分类专栏: 解决方案 MAC OS系统替换homebrew使用阿里 ...
- 洛谷 UVA10298 Power Strings 题解
Analysis 结论:设字符串长度为n,最长相同前后缀的长度为kmp[i],如n%(n-kmp[n])=0,则答案为n/(n-kmp[n]),否则为1. 如果循环节多于一个,以前n-kmp[n]个为 ...
- ckeditor编辑器从word粘贴公式
由于工作需要必须将word文档内容粘贴到编辑器中使用 但发现word中的图片粘贴后变成了file:///xxxx.jpg这种内容,如果上传到服务器后其他人也访问不了,网上找了很多编辑器发现没有一个能直 ...