展开全部

最近做的东西有这么一个需要:判断一个字符串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判断日文_如何判断字符串中含有日文字符相关推荐

  1. 输入字符串中含有该字符的个数

    2019独角兽企业重金招聘Python工程师标准>>> ##需求:写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数.不区分大小 ...

  2. 写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写

    002-华为机试-在线测试 题目描述 写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数.不区分大小写. 输入描述: 输入一个有字母和数字以及空格组成的字 ...

  3. python实现:计算字符的个数,接受一个由字母和数字组成的字符串和一个字符,然后输出输入的字符串中含有该字符的个数。不区分大小写。

    题目内容: 接受一个由字母和数字组成的字符串和一个字符,然后输出输入的字符串中含有该字符的个数.不区分大小写. 可以使用以下语句实现字符串s的输入: s=str(input()) 输入格式: 输入一个 ...

  4. Java实现 LeetCode 777 在LR字符串中交换相邻字符(分析题)

    777. 在LR字符串中交换相邻字符 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作.一次移动操作指用一个"L ...

  5. python处理中文字符串_处理python字符串中的中文字符

    # -*- coding:utf-8 -*- import sys,os txta = open('a.txt','r') str = '' for line in txta: str += line ...

  6. java判断日文_判断字符串是否含有日文

    日文字符的Unicode编码范围是: U+3040–U+309F: Hiragana U+30A0–U+30FF: Katakana U+4E00–U+9FBF: Kanji 所以我们只需要对每一个字 ...

  7. java怎么统计随机数出现次数,Excel统计出现次数、个数的VBA代码 java中怎么判断一个字符串中包含某个字符或字...

    延伸:java中怎么判断一个字符串中包含某个字符或字符 描述:...一个字符串中包含某个字符的单词说出现的次数 c#什么方法可以判断字符串中包含某个字符的个数? JAVA判断字符串数组中是否包含某字符 ...

  8. Excel如何判断某单元格或者字符串中是否包含某些字符?

    1.判断字符串是否含有某字符,区分大小写 比如判断字符串中是否包含大写字母A,可用公式=IF(ISNUMBER(FIND("A",A2)),"有"," ...

  9. Java通过正则剔除乱码_正则表达式 - 去掉乱码字符/提取字符串中的中文字符/提取字符串中的大小写字母 - Python代码...

    目录 1.乱码符号种类较少,用replace() 2.乱码字符种类较多,用re.sub() 3.提取字符串中的中文字符 4.提取字符串中的中文字符和数字 5.提取其他 数据清洗的时候一大烦恼就是数据中 ...

  10. java 删除指定字符_字符串删除指定位置字符 JAVA 删除字符串中指定的字符

    <死侍2>有多不按套路出牌? 要CSS布局HTML小编今天和大家分享用到函数的调用. 编制函数fun,其功能是:删除一个字符串中指定的一.问题描述:从键盘输入一个字符串给str和一个字符给 ...

最新文章

  1. java实现将String的数字提取出来
  2. HBase基础和伪分布式安装配置
  3. px, dip, dp,sp使用场景
  4. linux应用之----进程控制理论
  5. 被抖音公司开除了....
  6. regexp(正则表达式)的使用
  7. scratch小游戏脚本大全
  8. 条令考试小程序辅助器_微信小程序条令考试刷分 微信小程序答题刷分软件
  9. python3中26个英文字母排序_26个英文字母的排序是怎样排的?
  10. (CVPR-2014)通过预测 10,000 个类别的深度学习人脸表示
  11. 图书ISBN编码概述及java工具类校验
  12. 用python定时发送邮件
  13. 《UnityAPI.ParticleSystem粒子系统》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Particle+loop+Emit+立钻哥哥++OK++)
  14. [SSL_CHX][2021-8-18]量身高
  15. 如何使用计算机上合并计算方法,excel如何使用合并计算
  16. 负载均衡一致性哈希算法实现 | nginx 负载均衡一致性哈希源码分析 | ngx_http_upstream_consistent_hash_module 源码分析
  17. 引才!博士60万、硕士35万、本科28万,沿海城市
  18. 如何在自己的电脑开服务器(内网穿透)
  19. 配置基于IPv6的单节点Ceph
  20. iOS Run Loop

热门文章

  1. 面试题:Redis 40 道
  2. Django 错误信息:AttributeError: 'str' object has no attribute '_meta'
  3. 二端口输入阻抗和输出阻抗
  4. WPS表格如何快速添加斜线表头
  5. 用艾宾浩斯曲线记忆周期来背单词是否有理论依据?
  6. assignment to ‘float *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]指针类型错
  7. 微信开发者工具封装request请求
  8. win10输入法变成繁体字怎么办 - 如何关闭繁体,简体切换功能
  9. html5的元素拖拽
  10. BT软件系统包含哪些部分?BT技术如何突破运营商的封锁?