我有一个为命令行程序打印“标题文本”的方法,就像Markdown的语法一样:
1. =======================
2. This is a header string
3. =======================
此方法对第1行和第3行采用char c
,并根据n
的长度重复s
次。
String.length()
可以正常使用英文字母,但是如何找到包含外部多字节字符(如“Å”和“Ç”)的字符串的长度(即视觉长度)?
答案 0 :(得分:8)
String.length
适用于那些类型的字符,因为Java字符串在UTF-16中工作,这足以代表绝大多数常用字符(拉丁语,希腊语,阿拉伯语,希伯来语,中文, Thai,Devanagari,...)。
如果你可能需要处理U + FFFF以上的字符,那么你需要使用codePointCount
而不是length
来处理代理对。
答案 1 :(得分:2)
String.length()
适用于大多数Unicode字符,包括Å
和Ç
。
Java string utf-16
编码,每个Character
占用2
或4
个字节。
Supplementary characters表示占用4
字节的字符,由配对两个字符实现,在这种情况下,必须使用codePointCount
操作而不是{{ 1}}。
字符虽然肯定存在于标准的unicode规范中。