6

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

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

c此方法为第 1 行和第 3 行获取一个字符,并n根据s.

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

4

2 回答 2

10

String.length对这类字符没问题,因为 Java 字符串在 UTF-16 中工作,这足以表示绝大多数常用字符(拉丁语、希腊语、阿拉伯语、希伯来语、中文、泰语、梵文……) .

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

于 2012-10-03T15:56:51.867 回答
3

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

Java 字符串utf-16在每个 Character占用24字节的位置进行编码。

补充字符表示占4字节两个字符进行配对codePointCount来实现,这种情况下必须使用运算来代替length.

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

于 2012-10-03T15:55:35.957 回答