Как работает параметр смещения в сокращенной функции (String str,int offset,int maxWidth), в пакете org.apache.commons.lang.StringUtils

В настоящее время я работаю с пакетом apache commons lang, классом StringUtils. Я обнаружил, что есть два способа сокращения: abbreviate(String str,int maxwidth) а также abbreviate(String str,int offset,int maxwidth) это абсолютно нормально с первым. Но когда дело доходит до второго, это немного сбивает с толку, и мне действительно нужны разъяснения. Я видел два случая abbreviate(String str,int offset,int maxwidth) функция. это:

abbreviate("abcdefghijklmno",1,10)

возвращает "abcdefg...", а второй:

abbreviate("abcdefghijklmno",4,10)

также возвращает "abcdefg...".

Увидев это, я действительно в замешательстве, как именно работает параметр смещения??

1 ответ

Решение

Из JavaDoc метода:

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

В коде метода вы найдете

if (offset <= 4) {
   return str.substring(0, maxWidth - 3) + "...";
}

Вы можете прочитать код здесь: http://kickjava.com/src/org/apache/commons/lang/StringUtils.java.htm

Так что оба примера, которые вы приводите, должны вернуться "abcdefg...", Вы уверены, что получили "abcdefgh"?

Другие вопросы по тегам