栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java Unicode字符串长度

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java Unicode字符串长度

找到了解决您问题的方法。

基于这个SO答案,我制作了一个使用正则表达式字符类来搜索可能具有可选修饰符的字母的程序。它将您的字符串拆分为单个(如有必要,可合并)字符并将它们放入列表中:

import java.util.*;import java.lang.*;import java.util.regex.*;class Main{    public static void main (String[] args)    {        String s="குமார்";        List<String> characters=new ArrayList<String>();        Pattern pat = Pattern.compile("\p{L}\p{M}*");        Matcher matcher = pat.matcher(s);        while (matcher.find()) { characters.add(matcher.group());         }        // Test if we have the right characters and length        System.out.println(characters);        System.out.println("String length: " + characters.size());    }}

其中

\p{L}
表示Unipre字母,
\p{M}
表示Unipre标记。

该代码段的输出为:

குமார்String length: 3

有关有效的演示,请参见https://ideone.com/Apkapn


编辑

现在,我使用从http://en.wikipedia.org/wiki/Tamil_script中的表格中提取的所有有效的泰米尔语字母来检查我的正则表达式。我发现在当前的正则表达式中,我们无法正确捕获所有字母(Grantha复合表中最后一行的每个字母都分成两个字母),因此我将正则表达式细化为以下解决方案:

Pattern pat = Pattern.compile("u0B95u0BCDu0BB7\p{M}?|\p{L}\p{M}?");

使用这种模式而不是上面的模式,您应该可以将句子拆分为每个有效的泰米尔语字母(只要维基百科的表格完整)。

我用于检查的代码如下:

String s = "ஃஅஆஇஈஉஊஎஏஐஒஓஔக்ககாகிகீகுகூகெகேகைகொகோகௌங்ஙஙாஙிஙீஙுஙூஙெஙேஙைஙொஙோஙௌச்சசாசிசீசுசூசெசேசைசொசோசௌஞ்ஞஞாஞிஞீஞுஞூஞெஞேஞைஞொஞோஞௌட்டடாடிடீடுடூடெடேடைடொடோடௌண்ணணாணிணீணுணூணெணேணைணொணோணௌத்ததாதிதீதுதூதெதேதைதொதோதௌந்நநாநிநீநுநூநெநேநைநொநோநௌப்பபாபிபீபுபூபெபேபைபொபோபௌம்மமாமிமீமுமூமெமேமைமொமோமௌய்யயாயியீயுயூயெயேயையொயோயௌர்ரராரிரீருரூரெரேரைரொரோரௌல்லலாலிலீலுலூலெலேலைலொலோலௌவ்வவாவிவீவுவூவெவேவைவொவோவௌழ்ழழாழிழீழுழூழெழேழைழொழோழௌள்ளளாளிளீளுளூளெளேளைளொளோளௌற்றறாறிறீறுறூறெறேறைறொறோறௌன்னனானினீனுனூனெனேனைனொனோனௌஶ்ஶஶாஶிஶீஶுஶூஶெஶேஶைஶொஶோஶௌஜ்ஜஜாஜிஜீஜுஜூஜெஜேஜைஜொஜோஜௌஷ்ஷஷாஷிஷீஷுஷூஷெஷேஷைஷொஷோஷௌஸ்ஸஸாஸிஸீஸுஸூஸெஸேஸைஸொஸோஸௌஹ்ஹஹாஹிஹீஹுஹூஹெஹேஹைஹொஹோஹௌக்ஷ்க்ஷக்ஷாக்ஷிக்ஷீக்ஷுக்ஷூக்ஷெக்ஷேக்ஷைஷொக்ஷோஷௌ";List<String> characters = new ArrayList<String>();Pattern pat = Pattern.compile("u0B95u0BCDu0BB7\p{M}?|\p{L}\p{M}?");Matcher matcher = pat.matcher(s);while (matcher.find()) {    characters.add(matcher.group());}System.out.println(characters);System.out.println(characters.size() == 325);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/609564.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号