尝试通过修剪字符串来解决问题。
是否有任何长度()或子串(int,int)都没有计入的ascii字符?
实施例。如果字符串来自程序外部的序列化对象并包含诸如“文本开头”(ascii hx2)或“bell”(ascii hx7)之类的字符,那么将在length()或substring(int,int)中考虑这些字符)?
答案 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等“非字符”都将被计算在内。