TrimEnd для Java? - PullRequest
       8

TrimEnd для Java?

15 голосов
/ 27 января 2010

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

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

Ответы [ 8 ]

28 голосов
/ 27 января 2010

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

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

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

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

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

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

"string".replaceAll("^[" + characters + "]+", "");
10 голосов
/ 27 января 2010

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

5 голосов
/ 10 июня 2016

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

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);
}
2 голосов
/ 08 марта 2015

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

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

 if (s.endsWith(suffix)) {

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

 }
 return s;
}
2 голосов
/ 27 января 2010

Вот способ сделать это: http://www.overclock.net/coding-programming/320937-simple-java-trim-help.html

str = str.replaceAll(" +$", "");
1 голос
/ 22 мая 2018

Хорошие новости!
Он был добавлен в Java 11.
[JDK-8200378] String :: strip, String :: stripLeading, String :: stripTrailing - Java Bug System

  • strip()
  • stripLeading()
  • stripTrailing()
0 голосов
/ 18 августа 2017

Мне нравится версия googles из гуавы.

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>
0 голосов
/ 06 июля 2017

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

("X" + str).trim().substring(1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...