Hej!
Mam taki problem-mianowicie mam Stringa s = "abcqwe:fee:ppp::";
I chciałbym go podzielić po : z zastrzeżeniem że jak wcześniej napotka znak \ to żeby go nie dzielił,ma ktoś pomysł??Z góry dzięki
0
0
package test;
public class Test {
public static void main(String[] args) throws Exception {
String s = "abc:sdf:qwe\\:fee:ppp::";
String[] split = splitRegex(s);
for (String w : split) {
System.out.println(w);
}
}
private static String[] splitRegex(String s) {
String[] split = s.split("(?<!\\\\):");
for (int i = 0; i < split.length; ++i) {
String w = split[i];
int idx = w.indexOf('\\');
if (idx != -1) {
split[i] = w.substring(0, idx) + w.substring(1 + idx);
}
}
return split;
}
}
Wymyslilem na szybko takie cos z regexami. Zauwaz ze jesli chcesz sie pozbyc tych escapow \ to musisz je sam wyciac z danego slowa.
0
dzięki wielkie stary;)
0
możesz też zastosować 'Pattern'
String s = "abc:sdf:qwe\\:fee:ppp::";
String p = "(?<!\\\\):";
String[] result = Pattern.compile(p).split(s);
0
@up: przyjrzyj sie metodzie split, zajrzyj w jej zrodla.
Jak juz korzystac z Patterna a nie fasady split(), to najlepiej gdzies w statycznym final polu tego Patterna skompilowac, raz a dobrze, i pozniej sie do niego odwolywac.
0
@up tak wiem, ten przykład był tylko to pokazania zasady działania tej klasy
Edit:
Metoda split ze Stringa używa właśnie tego co pokazałem