TrimEnd for Java?

时间:2010-01-27 00:36:04

标签: java string

在将C#应用程序转换为Java的过程中,我遇到了使用String的TrimEnd方法。是否有等效的Java实现?我似乎无法找到一个。

我宁愿不用trim替换它,因为我不想在此时改变程序的含义或操作,除非我必须这样做。

8 个答案:

答案 0 :(得分:28)

没有直接的等效项,但是如果要删除尾随空格,可以使用:

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

\s是正则表达式字符集“whitespace”,如果您只关心去除尾随空格,可以用空格字符替换它。如果你想使用更一般的trimEnd()形式,即删除任意一组尾随字符,那么你需要稍微修改它以使用:

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

请注意,第一个参数是通用正则表达式,因此,如果您的characters之一是],那么这需要是列表中的第一个字符。有关java正则表达式模式的完整描述,请查看the javadoc

如果你需要从.net实现trimstart()方法,它几乎是一样的,但看起来像这样:

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

答案 1 :(得分:10)

没有直接替代品。您可以使用regexp,或者Commons Lang StringUtils.stripEnd()方法。

答案 2 :(得分:5)

如果你重视性能(也许你的方法用在数千个字符串的循环中),那么你可以使用这个方法:

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);
}

答案 3 :(得分:2)

这是一个诀窍: http://www.overclock.net/coding-programming/320937-simple-java-trim-help.html

str = str.replaceAll(" +$", "");

答案 4 :(得分:2)

没有原生等价物。使用此:

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

 if (s.endsWith(suffix)) {

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

 }
 return s;
}

答案 5 :(得分:1)

好消息!
它是在Java 11中添加的。
[JDK-8200378] String::strip, String::stripLeading, String::stripTrailing - Java Bug System

  • strip()
  • stripLeading()
  • stripTrailing()

答案 6 :(得分:0)

如果表现不重要,可以使用单线:

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

答案 7 :(得分:0)

我喜欢番石榴的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>