Java:多字节字符串长度

时间:2012-10-03 15:53:07

标签: java

我有一个为命令行程序打印“标题文本”的方法,就像Markdown的语法一样:

1. =======================
2. This is a header string
3. =======================

此方法对第1行和第3行采用char c,并根据n的长度重复s次。

String.length()可以正常使用英文字母,但是如何找到包含外部多字节字符(如“Å”和“Ç”)的字符串的长度(即视觉长度)?

2 个答案:

答案 0 :(得分:8)

String.length适用于那些类型的字符,因为Java字符串在UTF-16中工作,这足以代表绝大多数常用字符(拉丁语,希腊语,阿拉伯语,希伯来语,中文, Thai,Devanagari,...)。

如果你可能需要处理U + FFFF以上的字符,那么你需要使用codePointCount而不是length来处理代理对。

答案 1 :(得分:2)

String.length()适用于大多数Unicode字符,包括ÅÇ

Java string utf-16编码,每个Character占用24个字节。

Supplementary characters表示占用4字节的字符,由配对两个字符实现,在这种情况下,必须使用codePointCount操作而不是{{ 1}}。

字符虽然肯定存在于标准的unicode规范中。