2014-09-05 141 views

回答

51

您可以使用

领导:

System.out.println("//test/me".replaceAll("^/+", "")); 

追踪:

System.out.println("//test/me//".replaceAll("/+$", "")); 
+2

这似乎很好...你可以[在线测试](http://ideone.com/shHHV9) – 2014-09-05 18:22:51

+0

魔法如何发生?这是一个简单的替换完全后果。 – 2017-12-02 13:48:55

25

您可以使用Apache StringUtils.stripStart修剪前导字符,或使用StringUtils.stripEnd修剪尾随字符。

例如:

System.out.println(StringUtils.stripStart("//test/me", "/")); 

将输出:

测试/我

请注意,如果由于某种原因,你不能使用全StringUtils的图书馆,你可以只需撕掉相关部件,as detailed here

+1

这太好了! – 2018-01-11 11:11:06

1

我修剪的版本领导和/或字符串str尾部的String。两个参数都可以为null。当str没有前导和/或尾随时,它不会被改变。如果你想删除任何尾随char

String removeLeadingChar(String s, char c) { 
    int i; 
    for(i = 0; i < s.length() && s.charAt(i) == c; ++i); 
    return s.substring(i); 
} 

逻辑同样适用:

String trim(String str, String s) { 
    String res = s == null ? str : str == null ? null : s.length() >= str.length() ? str : str.replaceFirst(s, ""); 
    if ((res != null) && (s != null) && (res.length() >= s.length())) { 
     return res.substring(res.length() - s.length(), res.length()).equals(s) ? res.substring(0, res.length() - s.length()) : res; 
    } 
    return res; 
} 
2

,如果你想从一个字符串中删除前导字符,您可以使用一个简单的迭代。

0

装饰环,采用字符,字符串或正则表达式

如果运行时间是不是你的一个大问题,那么这段代码将被证明真的很有帮助。

public class StringTrimmer { 
    public static String trim(String string, char ch){ 
     return trim(string, ch, ch); 
    } 

    public static String trim(String string, char leadingChar, char trailingChar){ 
     return string.replaceAll("^["+leadingChar+"]+|["+trailingChar+"]+$", ""); 
    } 

    public static String trim(String string, String regex){ 
     return trim(string, regex, regex); 
    } 

    public static String trim(String string, String leadingRegex, String trailingRegex){ 
     return string.replaceAll("^("+leadingRegex+")+|("+trailingRegex+")+$", ""); 
    } 

    // test 
    public static void main(String[] args) { 
     System.out.println(trim("110100", '1', '0')); // outputs: 01 
     System.out.println(trim("**Aa0*#**", '*')); // outputs: Aa0*# 
     System.out.println(trim("123##22222", "12", "22")); // outputs: 3##2 
     System.out.println(trim("101101##10101", "101")); // outputs: ##10 
     System.out.println(trim("123##abcde", "\\d", "[c-e]")); // outputs: ##ab 
    } 
}