如何在修剪过的字符串上添加“...”?

时间:2013-12-02 23:59:54

标签: java android string text trim

我已经将字符串的maxLength设置为100,所以我需要前97个字符是普通字符,但最后三个字符必须是“......”。

尝试在字符串中添加+“...”,但是,当它达到限制时,无法在那里添加任何内容。

如何解决这个问题?

谢谢!

4 个答案:

答案 0 :(得分:4)

你还没有提到为什么要修剪字符串。 如果要修剪它以在TextView / Button / etc中使用它,请不要忘记您可以使用maxLines和ellipsize来实现所需的效果。

<TextView
    android:id="@+id/myText"
    android:maxLines="1"
    android:ellipsize="end"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>

(如果我错了,这与TextViews无关,请忽略这个答案:))

答案 1 :(得分:1)

应对所有长度字符串的解决方案:

String trim(String string, int maxLength)
{
    if (maxLength < 3)
        throw new IllegalArgumentException("Max length (" + maxLength + ") must at least 3");

    return string.length() > maxLength ? 
               string.substring(0, maxLength - 3) + "..." : 
               string;
}

答案 2 :(得分:0)

使用String#substring,如下所示:

int maxLength = 100;
String lastThree = "...";
return str.substring(0, maxLength - lastThree.length()) + "...");

一个工作示例:

public class Test {
    static final String str = "redgreenblue";
    static final String t = "...";
    public static void main(String[] args) {
        try {
            System.out.println(str.substring(0,10-t.length()) + t);
        }
        catch (StringIndexOutOfBoundsException e) {
            System.out.println(str + t);
        }
    }
}

答案 3 :(得分:0)

将字符串放在一起时,您几乎总是使用StringBuilder。在这种情况下,您可以调用setCharAt()来更改最后三个字符。如果您确实需要直接使用String,请使用substring()捕获前97个字符,然后添加省略号。