Java String length()和substring(int,int)不考虑某些字符?

时间:2015-01-30 18:32:35

标签: java regex string

尝试通过修剪字符串来解决问题。

是否有任何长度()或子串(int,int)都没有计入的ascii字符?

实施例。如果字符串来自程序外部的序列化对象并包含诸如“文本开头”(ascii hx2)或“bell”(ascii hx7)之类的字符,那么将在length()或substring(int,int)中考虑这些字符)?

2 个答案:

答案 0 :(得分:3)

请参阅String#length的文档:

  

返回此字符串的长度。长度等于字符串中Unicode代码单元的数量。

这意味着所有字符都包含在长度中。具体来说,这将返回表示Java中字符串所需的char个数。

但是,值得注意的是,由于Java使用UTF-16处理Unicode字符的方式,某些Unicode字符实际上会占用字符串中的两个char。有关详细信息,请参阅the relevant documentation

答案 1 :(得分:1)

  

是否有任何长度()或子串(int,int)都没有计入的ascii字符?

不,没有。这两个方法都是“哑”,并将返回char对象的基础字符数组中存储的String的数量(实际上,.length()继承自{{1} }})。

是否为ASCII控制字符,U + 0000和U + FFFF等“非字符”都将被计算在内。