Я уверен, что все мы видели эллипсис на статусах Facebook (или в другом месте), и нажали "Показать больше", и есть только еще 2 символа или около того. Я думаю, это из-за ленивого программирования, потому что, безусловно, есть идеальный метод.
Mine подсчитывает тонкие символы [iIl1]
как "половинные символы", но это не касается того, что многоточие выглядит глупо, когда они скрывают едва ли какие-либо символы.
Есть ли идеальный метод? Вот мой:
/**
* Return a string with a maximum length of <code>length</code> characters.
* If there are more than <code>length</code> characters, then string ends with an ellipsis ("...").
*
* @param text
* @param length
* @return
*/
public static String ellipsis(final String text, int length)
{
// The letters [iIl1] are slim enough to only count as half a character.
length += Math.ceil(text.replaceAll("[^iIl]", "").length() / 2.0d);
if (text.length() > length)
{
return text.substring(0, length - 3) + "...";
}
return text;
}
Язык не имеет большого значения, но помечен как Java, потому что это меня больше всего интересует.