Существует несколько причин, по которым метод length
может дать вам неожиданный ответ.
Метод длины в String
возвращает количество значений char в строке, но есть больше Unicode символов, чем возможно char
значений, поэтому для некоторых символов для хранения символа используется более одного значения символа. Чтобы получить ожидаемую длину, попробуйте следующее: s.codePointCount(0, s.length())
Если ваша строка содержит Объединяющий диакритический знак , который использует один символ, но отображается в сочетании с другим символом. Вот вопрос о том, как их определить: обнаружить любой комбинирующий символ в Java