Идеальный метод для усечения строки с многоточием

Я уверен, что все мы видели многоточие в статусах Facebook (или где-либо еще), и нажали «Показать больше», и есть только еще 2 символа или около того. Я предполагаю, что это из-за ленивого программирования, потому что, безусловно, существует идеальный метод.

Шахта считает стройных персонажей[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, потому что это то, что мне больше всего интересно видеть.

Ответы на вопрос(12)

Ваш ответ на вопрос