如何在java中获得unicode的字符长度和空格

如何在java中获得unicode的字符长度和空格,java,string,unicode,Java,String,Unicode,我需要找到我的绳子的长度“பாரதீய ஜனதா இளைஞர் அணி தலைவர் அனுராக்சிங் தாகூர் எம்.பி. நேற்று தேர்தல் ஆணையர் வி.சம்பத்". 我得到的字符串长度为45,但我希望字符串长度为59。这里我需要为空格和点(.)添加正则表达式条件。我的代码 import java.util.*; 导入java.lang.*; 导入java.util.regex.*; 类单数据长度 { 公共静态void main(字符串[]args) {

我需要找到我的绳子的长度“பாரதீய ஜனதா இளைஞர் அணி தலைவர் அனுராக்சிங் தாகூர் எம்.பி. நேற்று தேர்தல் ஆணையர் வி.சம்பத்". 我得到的字符串长度为45,但我希望字符串长度为59。这里我需要为空格和点(.)添加正则表达式条件。我的代码

import java.util.*;
导入java.lang.*;
导入java.util.regex.*;
类单数据长度
{
公共静态void main(字符串[]args)
{
字符串s=”பாரதீய ஜனதா இளைஞர் அணி தலைவர் அனுராக்சிங் தாகூர் எம்பி நேற்று தேர்தல் ஆணையர் விசம்பத்";
列表字符=新的ArrayList();
Pattern pat=Pattern.compile(“\\p{L}\\p{M}*”);
匹配器匹配器=匹配器;
while(matcher.find()){
characters.add(matcher.group());
}
//测试我们是否有正确的字符和长度
System.out.println(字符);
System.out.println(“字符串长度:+characters.size());
}

}下面的代码对我很有用。我解决了三个问题:

  • 我在正则表达式中添加了空格检查
  • 我在正则表达式中添加了标点检查
  • 我将你的评论中的字符串粘贴到你代码中的字符串中。它们不一样
  • 代码如下:

    public static void main(String[] args) {
        String s = "பாரதீய ஜனதா இளைஞர் அணி தலைவர் அனுராக்சிங் தாகூர் எம்.பி. நேற்று தேர்தல் ஆணையர் வி.சம்பத்";
        List<String> characters = new ArrayList<String>();
        Pattern pat = Pattern.compile("\\p{P}|\\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
        int i = 1;
        for (String character : characters) {
            System.out.println(String.format("%d = [%s]", i++, character));
        }
        System.out.println("Characters Size: " + characters.size());
    }
    
    publicstaticvoidmain(字符串[]args){
    字符串s=”பாரதீய ஜனதா இளைஞர் அணி தலைவர் அனுராக்சிங் தாகூர் எம்.பி. நேற்று தேர்தல் ஆணையர் வி.சம்பத்";
    列表字符=新的ArrayList();
    Pattern pat=Pattern.compile(“\\p{p}|\\p{L}\\p{M}*|”);
    匹配器匹配器=匹配器;
    while(matcher.find()){
    characters.add(matcher.group());
    }
    //测试我们是否有正确的字符和长度
    int i=1;
    用于(字符串:个字符){
    System.out.println(String.format(“%d=[%s]”,i++,character));
    }
    System.out.println(“字符大小:+Characters.Size());
    }
    

    可能值得指出的是,您的代码与中的非常相似。特别是对该解决方案的一条注释使我发现了代码中缺少的标点符号检查,并使我注意到您注释中的字符串与代码中的字符串不匹配。

    您能解释一下为什么您认为它应该是59吗?(我显然不懂那种语言பா 2.ர 3.தீ 4.ய 5 6 ஜ 7.ன 8.தா 9 10 இ 11ளை 12ஞ 13ர் 14 15 அ 16ணி 17 18 த 19லை 20வ 21ர் 22 23 அ 24னு 25ரா 26க் 27சி 28ங் 29 30 தா 31கூ 32ர் 33 34 எ 35ம் 36. 37பி 三十八点三九四零நே 41ற் 42று 43 44 தே 45ர் 46த 47ல் 48 49 ஆ 50ணை 51ய 52ர் 53 54 வி 55. 56ச 57ம் 58ப 59த்您应该打印出添加到列表中的字符串。Java处理这些字符的方式似乎与您建议的不同。@Dhinakar在您的评论中列出了所需的字符串,但有空的地方。例如,您的数字5和9没有映射任何内容。这是有区别的。您为什么认为模式匹配应该nd这样的空字母?所以只是一个提示:使用模式
    \p{L}?\p{M}*
    您将得到这些空字母(但仍然只有57个)。
    public static void main(String[] args) {
        String s = "பாரதீய ஜனதா இளைஞர் அணி தலைவர் அனுராக்சிங் தாகூர் எம்.பி. நேற்று தேர்தல் ஆணையர் வி.சம்பத்";
        List<String> characters = new ArrayList<String>();
        Pattern pat = Pattern.compile("\\p{P}|\\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
        int i = 1;
        for (String character : characters) {
            System.out.println(String.format("%d = [%s]", i++, character));
        }
        System.out.println("Characters Size: " + characters.size());
    }