s = s.substring(0, Math.min(s.length(), 10));
Использование Math.min
подобным образом позволяет избежать исключения в случае, когда строка уже короче 10
.
Примечания:
Выше реальная обрезка. Если вы действительно хотите заменить последние три (!) Символа точками, если они усекаются, используйте Apache Commons StringUtils.abbreviate
.
Это может вести себя некорректно 1 , если ваша строка содержит кодовые точки Unicode вне BMP; например Emojis. Для (более сложного) решения, которое работает корректно для всех кодовых точек Unicode, см. @ 1018 * решение * sibnick .
1 - кодовая точка Unicode, которая не находится на плоскости 0 (BMP), представлена как "суррогатная пара" (то есть два значения char
) в String
. Игнорируя это, мы можем урезать до менее 10 кодовых точек или (что еще хуже) усечь в середине суррогатной пары. С другой стороны, String.length()
больше не является идеальной мерой длины текста в Юникоде, поэтому обрезка на его основе может быть неправильной вещью.