Ideal-Methode zum Abschneiden eines Strings mit Auslassungspunkten

Ich bin mir sicher, dass wir alle Ellipsen auf Facebook (oder anderswo) gesehen haben und auf "Mehr anzeigen" geklickt haben. Es gibt nur zwei weitere Zeichen oder so. Ich schätze, das liegt an der schleppenden Programmierung, denn es gibt mit Sicherheit eine ideale Methode.

Mine zählt schlanke Charaktere[iIl1] als "halbe Zeichen", aber das kommt nicht darum herum, dass Ellipsen albern aussehen, wenn sie kaum Zeichen verbergen.

Gibt es eine ideale Methode? Hier ist mein

/**
 * 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;
}

Language spielt eigentlich keine Rolle, ist aber als Java gekennzeichnet, da ich hauptsächlich daran interessiert bin, das zu sehen.

Antworten auf die Frage(24)

Ihre Antwort auf die Frage