26

当这个字符串长度> 50时,我想剪切一个Java字符串,并在字符串的末尾添加“...”。

例子 :

我有以下 Java 字符串:

String str = "abcdefghijklmnopqrtuvwxyz";

我想在长度 = 8 处切割字符串:

结果必须是:

String strOut = "abcdefgh..."
4

8 回答 8

41

使用子字符串并连接:

if(str.length() > 50)
    strOut = str.substring(0,7) + "...";
于 2013-07-16T20:13:18.987 回答
34

StringUtils.abbreviate("abcdefg", 6);

这将为您提供以下结果:abc...

其中 6 是需要的长度,“abcdefg”是需要缩写的字符串。

于 2014-07-15T19:56:22.557 回答
14

使用子字符串

String strOut = "abcdefghijklmnopqrtuvwxyz"
String result = strOut.substring(0, 8) + "...";// count start in 0 and 8 is excluded
System.out.pritnln(result);

注意: substring(int first, int second) 有两个参数。第一个是包容性的,第二个是排他性的。

于 2013-07-16T20:08:13.817 回答
12

雅加达公共StringUtils.abbreviate()。如果由于某种原因您不想使用 3rd-party 库,请至少复制源代码

与迄今为止的其他答案相比,这样做的一大好处是,如果您传入空值,它不会抛出。

于 2013-07-16T20:10:51.463 回答
6

您可以使用安全的子字符串:

org.apache.commons.lang3.StringUtils.substring(str, 0, LENGTH);
于 2015-02-13T13:07:50.263 回答
4

您可以使用String#substring()

if(str != null && str.length() > 8) {
    return str.substring(0, 8) + "...";
} else {
    return str;
}

但是,您可以创建一个函数,在其中传递可以显示的最大字符数。只有当指定的宽度不足以容纳字符串时,省略号才会插入。

public String getShortString(String input, int width) {
  if(str != null && str.length() > width) {
      return str.substring(0, width - 3) + "...";
  } else {
      return str;
  }
}

// abcdefgh...
System.out.println(getShortString("abcdefghijklmnopqrstuvwxyz", 11));

// abcdefghijk
System.out.println(getShortString("abcdefghijk", 11)); // no need to trim
于 2013-07-16T20:15:11.530 回答
3

这样的事情可能是:

String str = "abcdefghijklmnopqrtuvwxyz";
if (str.length() > 8)
    str = str.substring(0, 8) + "...";
于 2013-07-16T20:11:28.360 回答
2
String strOut = str.substring(0, 8) + "...";
于 2013-07-16T20:13:14.257 回答