String foo = someString.substring(0, Math.min(13, someString.length()));
Редактировать: Просто для общего ознакомления, с Guava 16.0 вы можете сделать:
String truncated = Ascii.truncate(string, 16, "...");
для усечения до максимальной длины 16 символов смноготочие.
В сторону
Обратите внимание, однако, что усечение строки для отображения за символом не является хорошей системой для всего, что может потребоваться для i18n.Есть (по крайней мере) несколько разных проблем с ним:
- Вы можете принять во внимание границы слов и / или пробелы, чтобы избежать усечения в неудобном месте.
- Разделениесуррогатные пары (хотя этого можно избежать, просто проверив, является ли символ, который вы хотите обрезать, первым из суррогатной пары).
- Разделение символа и комбинирующего символа, следующего за ним (например,
e
сопровождаемый объединяющим символом, который ставит акцент на этом e
.) - Внешний вид символа может изменяться в зависимости от символа, следующего за ним в определенных языках, поэтому простое усечение этого символа приведет к чему-то, чтодаже не выглядит как оригинал.
По этим (и другим) причинам я понимаю, что наилучшей практикой усечения для отображения в пользовательском интерфейсе является на самом деле затухание рендеринга текста приправильная точка на экране, а не усечение основной строки.