Java_util_02_Java判断字符串是中文还是英文
做微信开发,使用百度翻译API时,需要指定译文的语种。这就需要我们判断待翻译内容是中文还是英文,若是中文,则翻译成英文,若是英文则翻译成中文。
方法一:字符与字节的长度
依据:一个中文占两个字节,一个英文占一个字节。故若是字符长度与字节长度相等,则判断为英文。否则为中文。
示例:
public static boolean isEnglish(String p) {
byte[] bytes = p.getBytes();
int i = bytes.length;//i为字节长度
int j = p.length();//j为字符长度
if(i==j){
return true;
}else{
return false;
}
}
方法二:正则表达式
依据:中文Unicode编码表
| 字符集 | 字数 | Unicode 编码 |
| 基本汉字 | 20902字 | 4E00-9FA5 |
| 基本汉字补充 | 38字 | 9FA6-9FCB |
| 扩展A | 6582字 | 3400-4DB5 |
| 扩展B | 42711字 | 20000-2A6D6 |
| 扩展C | 4149字 | 2A700-2B734 |
| 扩展D | 222字 | 2B740-2B81D |
| 康熙部首 | 214字 | 2F00-2FD5 |
| 部首扩展 | 115字 | 2E80-2EF3 |
| 兼容汉 | 477字 | F900-FAD9 |
| 兼容扩展 | 542字 | 2F800-2FA1D |
| PUA(GBK)部件 | 81字 | E815-E86F |
| 部件扩展 | 452字 | E400-E5E8 |
| PUA增补 | 207字 | E600-E6CF |
| 汉字笔画 | 36字 | 31C0-31E3 |
| 汉字结构 | 12字 | 2FF0-2FFB |
| 汉语注音 | 22字 | 3105-3120 |
| 注音扩展 | 22字 | 31A0-31BA |
| 〇 | 1字 | 3007 |
package org.liufeng.course.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Description 提供判断字符串是中文或者是英文的一种思路
*
*/
public class ChineseAndEnglish_Util {
public static void main(String[] args) {
String str = "我爱你,!?():;“”、。";
char[] charArray = str.toCharArray();
for (int i = 0; i < charArray.length; i++) {
isChinese(charArray[i]);
}
String chinese = "中国god damn";
System.out.println(isContainChinese(chinese));
String english = "dfafdabac";
System.out.println(isEnglish(english));
} /**
* 1.判断字节是否是中文
*
* CJK的意思是“Chinese,Japanese,Korea”的简写 ,实际上就是指中日韩三国的象形文字的Unicode编码
* Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS :4E00-9FBF:CJK 统一表意符号
* Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS :F900-FAFF:CJK 兼容象形文字
* Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A :3400-4DBF:CJK 统一表意符号扩展 A
* Character.UnicodeBlock.GENERAL_PUNCTUATION :2000-206F:常用标点
* Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION :3000-303F:CJK 符号和标点
* Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS :FF00-FFEF:半角及全角形式
*
*/
public static boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (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) {
return true;
}
return false;
}
//2.检测是否包含英文
public static boolean isEnglish(String charaString) {
return charaString.matches("^[a-zA-Z]*");
}
//3.检测是否包含中文
public static boolean isContainChinese(String str) {
String regEx = "[\\u4E00-\\u9FA5]+";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
if (m.find()) {
return true;
} else {
return false;
}
}
}
Java_util_02_Java判断字符串是中文还是英文的更多相关文章
- Java判断字符串是中文还是英文
在做开发的时候我们经常需要用到根据某个字符或者字符串来判断其是中文还是英文,从而做相应的处理,其实不难,大多数人们都是用到正则来判断的,下面小贝就给大家分享一下Java判断字符串是中文还是英文 推荐文 ...
- JAVA 统计字符串中中文,英文,数字,空格的个数
面试题:输入一行字符,分别统计出其中英文字母.中文字符.空格.数字和其它字符的个数 可以根据各种字符在Unicode字符编码表中的区间来进行判断,如数字为'0'~'9'之间,英文字母为'a'~'z'或 ...
- JAVA 统计字符串中中文,英文,数字,空格,特殊字符的个数
引言 可以根据各种字符在Unicode字符编码表中的区间来进行判断,如数字为'0'~'9'之间,英文字母为'a'~'z'或'A'~'Z'等,Java判断一个字符串是否有中文是利用Unicode编码来判 ...
- Java判断字符串中是否含有英文
实现代码: /* * 判断字符串中是否含有英文,包含返回true */ public boolean isENChar(String string) { boolean flag = false; P ...
- C#中判断字符串是否中文的方法
public bool IsChinaString(string CString) { bool BoolValue = false; ; i < CString.Length; i++) { ...
- php 判断字符串包含中文(转)
$str = "测试中文"; echo $str; echo "<hr>"; //if (preg_match("/^[".ch ...
- java判断字符串是否中文、日文
直接上代码: import java.io.UnsupportedEncodingException; public class StringUtil { /** * 去掉字符串中的标点符号.空格和数 ...
- javascript 正则表达式判断只能是中文、英文或者中文加英文
var reglx =/^[\u4e00-\u9fa5a-zA-Z]+$/ 这个是至少有一个中文或者英文 var reglx =/^[\u4e00-\u9fa5a-zA-Z]*$/ 这个是0个以上的中 ...
- Java 完美判断字符串中中文字符【中文符号】
package com.cmc.util; import java.util.regex.Pattern; public class CharUtil { public static void mai ...
随机推荐
- Elasticsearch5.3 学习(一):安装、Yii2.0 下载es扩展
Elasticsearch是一个基于Lucene,提供了一个分布式多用户能力的全文搜索引擎.其他就不多说了,官方文档有详细的介绍. 我自己是在CentOS 7.0安装的 Elasticsearch 是 ...
- MyEclipse中Save could not be completed
在MyEclipse下编程时,保存的时候,假设出现例如以下图所看到的错误: - 刘立 - 707903908的博客" src="http://img0.ph.126.net/9y4 ...
- Expression Tree上手指南 (一)
大家可能都知道Expression Tree是.NET 3.5引入的新增功能.不少朋友们已经听说过这一特性,但还没来得及了解.看看博客园里的老赵等诸多牛人,将Expression Tree玩得眼花缭乱 ...
- 让WebRTC支持H264编解码
近期实验了下怎样让WebRTC支持H264编码.记录下,供有须要的人參考. 说明一下,我是在 Ubuntu Server 14.04 下编译的 WebRTC ,使用 native(C++) api 开 ...
- willMoveToParentViewController和didMoveToParentViewController
本文转载至 http://blog.csdn.net/yongyinmg/article/details/40619727 iOS 5.0 后UIViewController新增:willMoveTo ...
- 爬虫入门【3】BeautifulSoup4用法简介
快速开始使用BeautifulSoup 首先创建一个我们需要解析的html文档,这里采用官方文档里面的内容: html_doc = """ <html>< ...
- 关于KMP算法的感想
今天,看了KMP,首先是在网上看的,看了很久没看懂,有很多思想,很多next的推导,就相当于很多的版本,后来,去看了<<大话数据结构>>这本书,才看懂,这KMP的神奇之处,这本 ...
- PhotoKit详解
Photokit介绍 这篇主要介绍如何通过 Photokit获取数据 photokit.jpg 1,基类 PHObject Photos 框架中的根类PHObject只有一个公开接口 localIde ...
- spring bean标签常用属性
一.id属性 其名称,可以是任意名称,但不能包含特殊符号. 根据id得到配置对象. 二.class属性 创建对象所在的类名称 三.name属性 功能和id属性一样,但name属性值可以包含特殊属性 四 ...
- linux c编程:信号(一)
信号是软件中断,很多比较重要的应用程序都需要处理信号.并且信号提供了一种处理异步事件的方法.如终端用户键入中断键,会通过信号机制停止一个程序,或及早终止管道中的下一个程序 很多条件都可以产生信号,比如 ...