在Java中的字符串的字符数[复制](Number of characters in Java St

2019-09-23 13:14发布

可能重复:
Java的:使用Unicode划线显示平方根当字符串的长度?

如何获得字符串的Unicode字符数?

给定char[]的泰语字符:

[อ, ภ, ิ, ช, า, ต, ิ]

这出来的字符串为:Apichart。

String.length()返回7.我知道有(技术上)7个字符,但我需要一个能返回我5.在屏幕上代表字符空格的确切数目的方法。

Answer 1:

看来你只是想不算unicode的痕迹是不同的字符;

static boolean isMark(char ch)
{
    int type = Character.getType(ch);
    return type == Character.NON_SPACING_MARK ||
           type == Character.ENCLOSING_MARK ||
           type == Character.COMBINING_SPACING_MARK;
}

这可被用作;

String olle = "อภิชาติ";
int count = 0;

for(int i=0; i<olle.length(); i++)
{
    if(!isMark(olle.charAt(i)))
        count++;
}

System.out.println(count);

并返回“5”。



Answer 2:

您可以适应张贴在这里这个问题的解决方案:

统一在Java字符串转换

通过剥离“#”字符和字符串清点剩余的字符。



Answer 3:

您可以使用java.text.BreakIterator找到差距的字形之间(“视觉字符”),并指望他们。 下面是一个例子:

import java.text.BreakIterator;

..

int graphemeLength(String str) {
    BreakIterator iter = BreakIterator.getCharacterInstance();
    iter.setText(str);

    int count = 0;
    while (iter.next() != BreakIterator.DONE) count++;

    return count;
}

大厦现在graphemeLength("อภิชาติ")将返回5。



文章来源: Number of characters in Java String [duplicate]