java判断日文_如何判断字符串中含有日文字符
展开全部
最近做的东西有这么一个需要:判断一个字符串e68a84e8a2ad62616964757a686964616f31333337376261中是否含有日文字符。最直观的想法就是使用正则表达式,因此上网一搜,找到了这个 utf-8 对应的日文字符列表:http://ash.jp/code/unitbl21.htm 。满心欢喜,按照列表,用utf-16指定的区间,再用正则表达式方式写了一个判断方法。
测试了几个单词,正确。不过测试了几个汉字,发现不对。
仔细看了看那个表,发现 字母和假名部分,utf-16是连续的,但是汉字和特殊字符部分,就不是连续的了。这就是用正则表达式也得累死人!
再看看那个表,SJIS 编码的code是连续的,恩,可以使用区间,所以字符串得转换一下:
Java代码str = new String(str.getBytes(), "UTF-8");
byte[] bt = str.getBytes("SHIFT-JIS");
不过那个表也真大阿!!就算用 shift-jis编码,正则表达式也不短!
在输出 byte[] 的时候,发现如果是中文的话,那么 byte[] 的长度会小于4,而且不会被2 整除。于是乎,方法来了:
Java代码return bt.length %2 == 0;
这个方法可以判断一个字符是否为日文字符,那么判断字符串中是否包含日文字符也不难了。
以下是测试类:
Java代码assertTrue(CharacterUtil.isContainJapaneseCharacter("亜亜"));
assertTrue(CharacterUtil.isContainJapaneseCharacter("お早う"));
assertTrue(CharacterUtil.isContainJapaneseCharacter("学校"));
assertTrue(CharacterUtil.isContainJapaneseCharacter("お早う,tom!"));
assertFalse(CharacterUtil.isContainJapaneseCharacter("严"));
assertFalse(CharacterUtil.isContainJapaneseCharacter("tom"));
try {
InputStream is = getClass().getClassLoader().getResourceAsStream("util/CharacterTest.utf_8");
LineNumberReader ln = new LineNumberReader(new InputStreamReader(is, "UTF-8"));
// 汉字 足
assertTrue(CharacterUtil.isContainJapaneseCharacter(ln.readLine()));
// あし 足
assertTrue(CharacterUtil.isContainJapaneseCharacter(ln.readLine()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
其中比较特殊的是 “足”之类的文字,在 UNICODE 列表中,中日韩有几部分是公用一些汉字的。(CharacterTest.utf_8 是一个 utf-8 编码的文本文件,里面分别用汉字和日文写了“足”这个字 )。
java判断日文_如何判断字符串中含有日文字符相关推荐
- 输入字符串中含有该字符的个数
2019独角兽企业重金招聘Python工程师标准>>> ##需求:写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数.不区分大小 ...
- 写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写
002-华为机试-在线测试 题目描述 写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数.不区分大小写. 输入描述: 输入一个有字母和数字以及空格组成的字 ...
- python实现:计算字符的个数,接受一个由字母和数字组成的字符串和一个字符,然后输出输入的字符串中含有该字符的个数。不区分大小写。
题目内容: 接受一个由字母和数字组成的字符串和一个字符,然后输出输入的字符串中含有该字符的个数.不区分大小写. 可以使用以下语句实现字符串s的输入: s=str(input()) 输入格式: 输入一个 ...
- Java实现 LeetCode 777 在LR字符串中交换相邻字符(分析题)
777. 在LR字符串中交换相邻字符 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作.一次移动操作指用一个"L ...
- python处理中文字符串_处理python字符串中的中文字符
# -*- coding:utf-8 -*- import sys,os txta = open('a.txt','r') str = '' for line in txta: str += line ...
- java判断日文_判断字符串是否含有日文
日文字符的Unicode编码范围是: U+3040–U+309F: Hiragana U+30A0–U+30FF: Katakana U+4E00–U+9FBF: Kanji 所以我们只需要对每一个字 ...
- java怎么统计随机数出现次数,Excel统计出现次数、个数的VBA代码 java中怎么判断一个字符串中包含某个字符或字...
延伸:java中怎么判断一个字符串中包含某个字符或字符 描述:...一个字符串中包含某个字符的单词说出现的次数 c#什么方法可以判断字符串中包含某个字符的个数? JAVA判断字符串数组中是否包含某字符 ...
- Excel如何判断某单元格或者字符串中是否包含某些字符?
1.判断字符串是否含有某字符,区分大小写 比如判断字符串中是否包含大写字母A,可用公式=IF(ISNUMBER(FIND("A",A2)),"有"," ...
- Java通过正则剔除乱码_正则表达式 - 去掉乱码字符/提取字符串中的中文字符/提取字符串中的大小写字母 - Python代码...
目录 1.乱码符号种类较少,用replace() 2.乱码字符种类较多,用re.sub() 3.提取字符串中的中文字符 4.提取字符串中的中文字符和数字 5.提取其他 数据清洗的时候一大烦恼就是数据中 ...
- java 删除指定字符_字符串删除指定位置字符 JAVA 删除字符串中指定的字符
<死侍2>有多不按套路出牌? 要CSS布局HTML小编今天和大家分享用到函数的调用. 编制函数fun,其功能是:删除一个字符串中指定的一.问题描述:从键盘输入一个字符串给str和一个字符给 ...
最新文章
- java实现将String的数字提取出来
- HBase基础和伪分布式安装配置
- px, dip, dp,sp使用场景
- linux应用之----进程控制理论
- 被抖音公司开除了....
- regexp(正则表达式)的使用
- scratch小游戏脚本大全
- 条令考试小程序辅助器_微信小程序条令考试刷分 微信小程序答题刷分软件
- python3中26个英文字母排序_26个英文字母的排序是怎样排的?
- (CVPR-2014)通过预测 10,000 个类别的深度学习人脸表示
- 图书ISBN编码概述及java工具类校验
- 用python定时发送邮件
- 《UnityAPI.ParticleSystem粒子系统》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Particle+loop+Emit+立钻哥哥++OK++)
- [SSL_CHX][2021-8-18]量身高
- 如何使用计算机上合并计算方法,excel如何使用合并计算
- 负载均衡一致性哈希算法实现 | nginx 负载均衡一致性哈希源码分析 | ngx_http_upstream_consistent_hash_module 源码分析
- 引才!博士60万、硕士35万、本科28万,沿海城市
- 如何在自己的电脑开服务器(内网穿透)
- 配置基于IPv6的单节点Ceph
- iOS Run Loop
热门文章
- 面试题:Redis 40 道
- Django 错误信息:AttributeError: 'str' object has no attribute '_meta'
- 二端口输入阻抗和输出阻抗
- WPS表格如何快速添加斜线表头
- 用艾宾浩斯曲线记忆周期来背单词是否有理论依据?
- assignment to ‘float *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]指针类型错
- 微信开发者工具封装request请求
- win10输入法变成繁体字怎么办 - 如何关闭繁体,简体切换功能
- html5的元素拖拽
- BT软件系统包含哪些部分?BT技术如何突破运营商的封锁?