代码之家  ›  专栏  ›  技术社区  ›  jasonh

TrimEnd for Java?

  •  14
  • jasonh  · 技术社区  · 16 年前

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

    trim ,因为此时我不想改变程序的含义或操作,除非我必须这样做。

    8 回复  |  直到 8 年前
        1
  •  33
  •   Paul Wagland    5 年前

    自Java11以来,您可以使用 "string".stripTrailing() 删除尾随空格,或 "string".stripLeading() . 如果您需要去除指定字符的更通用的版本,请参见下文,Java11中没有直接替换。

    对于Java 11之前的版本,此处保留旧答案:

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

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

    \s trimEnd()

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

    请注意,第一个参数是泛型正则表达式,因此如果 characters ] 然后这需要是列表中的第一个字符。有关java正则表达式模式的完整描述,请参见 the javadoc

    您是否需要实施 trimstart() 方法,它几乎是相同的,但看起来是这样的:

    "string".replaceAll("^[" + characters + "]+", "");
    
        2
  •  13
  •   Brian Agnew    5 年前
        3
  •  6
  •   user1285221    10 年前

    如果您重视性能(可能您的方法在数千个字符串的循环中使用),则可以使用此方法:

    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);
    }
    
        4
  •  5
  •   YujiSoftware    8 年前


    它是在Java11中添加的。
    [JDK-8200378] String::strip, String::stripLeading, String::stripTrailing - Java Bug System

    • strip()
    • stripLeading()
    • stripTrailing()
        5
  •  3
  •   kroiz    11 年前

    没有本地的等价物。使用以下命令:

    public static String trimEnd( String s,  String suffix) {
    
     if (s.endsWith(suffix)) {
    
       return s.substring(0, s.length() - suffix.length());
    
     }
     return s;
    }
    
        6
  •  2
  •   Jon Onstott    16 年前

    下面是一个技巧: http://www.overclock.net/coding-programming/320937-simple-java-trim-help.html

    str = str.replaceAll(" +$", "");
    
        7
  •  0
  •   Nikolay Mikhaylov    9 年前

    ("X" + str).trim().substring(1)
    
        8
  •  0
  •   Xanas    8 年前

    我喜欢谷歌版的番石榴。

    import static com.google.common.base.CharMatcher.WHITESPACE;
    
    WHITESPACE.trimTrailingFrom(value);
    

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

    如果您使用的是maven,那么只需将其添加到pom.xml的dependencies部分即可。

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