Jak przyciąć znaki początkowe lub końcowe z ciągu w java?Java - Przytnij znaki wiodące lub końcowe z ciągu znaków?
Na przykład ukośnik "/" - Nie interesują mnie spacje i staram się przyciąć znaki wiodące lub końcowe w różnych momentach.
Jak przyciąć znaki początkowe lub końcowe z ciągu w java?Java - Przytnij znaki wiodące lub końcowe z ciągu znaków?
Na przykład ukośnik "/" - Nie interesują mnie spacje i staram się przyciąć znaki wiodące lub końcowe w różnych momentach.
You przydałby
wiodąca:
System.out.println("//test/me".replaceAll("^/+", ""));
Trailing:
System.out.println("//test/me//".replaceAll("/+$", ""));
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:
To jest świetne! –
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;
}
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
.
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
}
}
który wydaje się działać dobrze ... możesz [testuj tutaj online] (http://ideone.com/shHHV9) –
Jak działa magia? Jest to proste zastąpienie wszystkiego. –