2014-09-05 12 views

Odpowiedz

51

You przydałby

wiodąca:

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

Trailing:

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

który wydaje się działać dobrze ... możesz [testuj tutaj online] (http://ideone.com/shHHV9) –

+0

Jak działa magia? Jest to proste zastąpienie wszystkiego. –

25

Możesz użyć Apache StringUtils.stripStart do przycinania wiodących znaków lub StringUtils.stripEnd, aby przyciąć końcowe znaki.

Na przykład:

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

wyjście wola:

test/mi

Zauważ, że jeśli z jakiegoś powodu nie możesz korzystać z całej biblioteki StringUtils, można po prostu wyrwij odpowiednie części, as detailed here:

+1

To jest świetne! –

1

Moja wersja przycinanie prowadzące i/lub końcowe String s od String str. Oba argumenty mogą mieć wartość zerową. Kiedy str nie ma wiodących i/lub kończących s, nie jest zmieniane.

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

Można użyć prostego iteracji jeśli chcesz usunąć wiodące postacie z ciągiem:

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

sama logika ma zastosowanie, jeżeli chcesz usunąć dowolny spływu char.

0

trymowania z charakterem, łańcuch, lub Regex

Jeśli run-time nie jest to duży problem dla Ciebie, to kod okaże się bardzo pomocna.

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 
    } 
} 
Powiązane problemy