我已经将字符串的maxLength设置为100,所以我需要前97个字符是普通字符,但最后三个字符必须是“......”。
尝试在字符串中添加+“...”,但是,当它达到限制时,无法在那里添加任何内容。
如何解决这个问题?
谢谢!
答案 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个字符,然后添加省略号。