最近做的东西有这么一个需要:判断一个字符串中是否含有日文字符。最直观的想法就是使用正则表达式,因此上网一搜,找到了这个 utf-8 对应的日文字符列表:http://ash.jp/code/unitbl21.htm 。满心欢喜,按照列表,用utf-16指定的区间,再用正则表达式方式写了一个判断方法。
测试了几个单词,正确。不过测试了几个汉字,发现不对。
仔细看了看那个表,发现 字母和假名部分,utf-16是连续的,但是汉字和特殊字符部分,就不是连续的了。这就是用正则表达式也得累死人!
再看看那个表,SJIS 编码的code是连续的,恩,可以使用区间,所以字符串得转换一下:
Java代码
str = new String(str.getBytes(), "UTF-8");不过那个表也真大阿!!就算用 shift-jis编码,正则表达式也不短!
在输出 byte[] 的时候,发现如果是中文的话,那么 byte[] 的长度会小于4,而且不会被2 整除。于是乎,方法来了:
Java代码
return bt.length %2 == 0;这个方法可以判断一个字符是否为日文字符,那么判断字符串中是否包含日文字符也不难了。
以下是测试类:
Java代码
assertTrue(CharacterUtil.isContainJapaneseCharacter("亜亜"));其中比较特殊的是 “足”之类的文字,在 UNICODE 列表中,中日韩有几部分是公用一些汉字的。(CharacterTest.utf_8 是一个 utf-8 编码的文本文件,里面分别用汉字和日文写了“足”这个字 )。
如何判断字符串中含有日文字符
最近做的东西有这么一个需要:判断一个字符串中是否含有日文字符。最直观的想法就是使用正则表达式,因此上网一搜,找到了这个 utf-8 对应的日文字符列表:http:\/\/ash.jp\/code\/unitbl21.htm 。满心欢喜,按照列表,用utf-16指定的区间,再用正则表达式方式写了一个判断方法。测试了几个单词,正确。不...
c#如何判断字符串是否有日文
日文在unicode中的编码范围你查一下,当你要判断这个字符是不是日文的时候,只需要查一下这个字符的编码是不是在日文编码范围就可以了。祝你成功!
UTF8如何区分中日韩混合的字符串中的字符? - PHP进阶讨论
虽然对应的汉字不一样,但都是有效汉字。所以严格地说,是无法判断的。但从UTF8编码规则看,字符串有几种固定的组合:110xxxxx,10xxxxxx,10xxxxxx 1110xxxxx,10xxxxxx,10xxxxxx,10xxxxxx 等,如果符合这个条件,那么可以说“字符串为UTF8编码的可能性非常大”。
如何在一个带有日文的字符串中查找指定的日文字符?
rec=eregi("未确定",$source);eregi -- 不区分大小写的正则表达式匹配 返回布尔值。
EXCEL中如何用函数公式,在字符串中如何查找其中包含的一个字
在EXCEL中可以使用FIND函数来查找字符串中包含的字。使用语法 FIND(find_text,within_text,start_num)Find_text 是要查找的字符串。Within_text 是包含要查找关键字的单元格。就是说要在这个单元格内查找关键字 Start_num 指定开始进行查找的字符数。比如Start_num为1,则从单元格内第一个字符开始查找...
Java 中解决日文乱码问题
进行字符集转换时,使用Java自带方法,如String.getBytes()将字符串转换为字节数组,并用new String(byte[])将其转换为字符串。转换时需指定字符集,确保编码与解码一致。例如,转换日文字符串为Shift-JIS编码的字节数组及将其转换为字符串的代码。文件编码时,需指定编码方式以确保读取和写入一致。使用...
如何VBA使用识别中文及日文
Excel函数:PHONETIC 提取文本字符串中的拼音 (furigana) 字符。该函数只适用于日文版。不过我从网上找到一些日文,然后使用这个函数后与使用前比较是False。而全部是中文是True.会用VBA,怎么使用这个函数不用说了吧
Python字符串详解(包含长字符串和原始字符串)
换行书写长字符串:行尾加反斜杠\\,如:字符串s2换行书写,方便长字符串多行输入。Python长字符串:使用三个单引号'''或双引号"""包围。长字符串中可放置单引号、双引号,内容前后空白符保持原样输出。长字符串未赋值不生效,像被注释。解析完整,但无实际作用。推荐使用长字符串定义大段文本,格式...
VB6\/VBA - InStr\/InStrRev 内存溢出,求专业人士解答!
尽管你可能不愿意听,但这确实是VB语言的一个Bug,只要字符串中含有如下日文字符(并不是全部日文字符),在进行文本比较时就会出错(二进制比较则不会出错):ゴガギグゲザジズヅデドポベプビパヴボペブピバヂダゾゼ 这个Bug已经被微软通过补丁更正。可以用变通的方法实现不区分大小写的字符串查询...
c#怎么判断字符串是不是片假名,做文件处理,表中某一列的数据怎么知道它...
下面这个是我网上找到,用的是正则表达式匹配,你看看。这些字符集尤其是日文字符集的各种字、标点以及特殊符号的时候有所帮助。UTF8 [\\x01-\\x7f]|[\\xc0-\\xdf][\\x80-\\xbf]|[\\xe0-\\xef][\\x80-\\xbf]{2}|[\\xf0-\\xff][\\x80-\\xbf]{3} UTF16 [\\x00-\\xd7][\\xe0-\\xff]|[\\xd8-...