Вырезать строку Java по нескольким символам

Я хотел бы вырезать строку Java, когда эта длина строки > 50, и добавить "..." в конце строки.

Пример:

У меня есть следующая строка Java:

String str = "abcdefghijklmnopqrtuvwxyz";

Я хотел бы вырезать строку длиной = 8:

Результат должен быть:

String strOut = "abcdefgh..."

Ответы

Ответ 1

Используйте подстроку и конкатенацию:

if(str.length() > 50)
    strOut = str.substring(0,7) + "...";

Ответ 2

StringUtils.abbreviate("abcdefg", 6);

Это даст вам следующий результат: abc...

Где 6 - необходимая длина, а "abcdefg" - это строка, которая должна быть сокращена.

Ответ 3

Используйте подстроку

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

Примечание: подстрока (int first, int second) принимает два параметра. Первый является инклюзивным, а второй - исключительным.

Ответ 4

Jakarta Commons StringUtils.abbreviate(). Если по какой-то причине вы не хотите использовать стороннюю библиотеку, по крайней мере скопируйте исходный код .

Одно большое преимущество этого по сравнению с другими ответами на сегодняшний день заключается в том, что он не будет метаться, если вы передадите нулевой символ.

Ответ 5

Вы можете использовать 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

Ответ 6

Вы можете использовать безопасную подстроку:

org.apache.commons.lang3.StringUtils.substring(str, 0, LENGTH);

Ответ 7

Что-то вроде этого может быть:

String str = "abcdefghijklmnopqrtuvwxyz";
if (str.length() > 8)
    str = str.substring(0, 8) + "...";

Ответ 8

String strOut = str.substring(0, 8) + "...";