TrimEnd for Java?

jas*_*onh 16 java string

在将C#应用程序转换为Java的过程中,我遇到了String的TrimEnd方法.是否有等效的Java实现?我好像找不到一个.

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

Pau*_*and 30

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

"string".replaceAll("\\s+$", "");
Run Code Online (Sandbox Code Playgroud)

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

"string".replaceAll("[" + characters + "]+$", "");
Run Code Online (Sandbox Code Playgroud)

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

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

"string".replaceAll("^[" + characters + "]+", "");
Run Code Online (Sandbox Code Playgroud)


Bri*_*new 11

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

  • StringUtils为+1.除了trimXXX之外,它们还提供stripXXX,它可以正确处理Unicode空白(仅修剪/修剪ASCII控制代码). (3认同)

小智 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);
}
Run Code Online (Sandbox Code Playgroud)


Yuj*_*are 5

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

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