Подтвердить что ты не робот

TrimEnd для Java?

В процессе преобразования приложения С# в Java я столкнулся с использованием метода String TrimEnd. Существует ли эквивалентная реализация Java? Кажется, я не могу найти его.

Я бы предпочел не заменять его на trim, так как я не хочу менять значение или действие программы на данный момент, если только не нужно.

4b9b3361

Ответ 1

Нет прямого эквивалента, однако, если вы хотите разделить конечные пробелы, вы можете использовать:

"string".replaceAll("\\s+$", "");

\s - это набор символов регулярного выражения "whitespace", если вы только заботитесь об удалении конечных пробелов, вы можете заменить его символом пробела. Если вы хотите использовать более общую форму trimEnd(), то есть удалить произвольный набор конечных символов, вам нужно немного изменить его использовать:

"string".replaceAll("[" + characters + "]+$", "");

Имейте в виду, что первый аргумент является общим регулярным выражением, поэтому если один из ваших characters - это ], тогда это должен быть первый символ в вашем списке. Для полного описания шаблонов регулярных выражений java просмотрите javadoc.

Если вам когда-либо понадобится реализовать метод trimstart() из .net, это почти то же самое, но будет выглядеть так:

"string".replaceAll("^[" + characters + "]+", "");

Ответ 2

Нет прямой замены. Вы можете использовать регулярные выражения, или, возможно, Commons Lang StringUtils.stripEnd().

Ответ 3

если вы оцениваете производительность (возможно, ваш метод используется в цикле над тысячами строк), чем вы могли бы использовать этот метод:

public String trimEnd(String value) {
    int len = value.length();
    int st = 0;
    while ((st < len) && value.charAt(len - 1) == ' ') {
      len--;
    }
    return value.substring(0, len);
}

Ответ 5

Нет никакого родного эквивалента. Используйте это:

public static String trimEnd( String s,  String suffix) {

 if (s.endsWith(suffix)) {

   return s.substring(0, s.length() - suffix.length());

 }
 return s;
}

Ответ 6

Если производительность не важна, можно использовать один слот:

("X" + str).trim().substring(1)

Ответ 7

Мне нравится версия googles от guava.

import static com.google.common.base.CharMatcher.WHITESPACE;

WHITESPACE.trimTrailingFrom(value);

или

CharMatcher.anyOf(suffix).trimTrailingFrom(value);

Если вы используете maven, вы можете добавить его просто в раздел зависимостей pom.xml.

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>23.0</version>
</dependency>