Zeichen in einem String zwischen 2 festgelegten Zeichen auslesen
-
Der String sieht normalerweise immer so aus
String = "[NACHRICHT]+[55]+[unbekanter String]";
ich möchte nur das was in der 2 Klammer also eine 2 stellige Zahl auslesen und den String in der 3 Klammer welcher aber eine variable Länge hat
-
Entweder du suchst manuell, oder du verwendest RegularExpressions und erstellst dir via Pattern.matcher() einen Matcher. Das 2. und das 3. gefundene Exemplar ist dann das Deinige
http://www.regular-expressions.info/java.html
MfG SideWinder
-
regex für jemand der keine idee hat wie es überhaupt zu lösen sein könnte...?
Ich glaub das ist nicht ganz so leicht.String s = "[NACHRICHT]+[55]+[unbekanter String]";
Wenn dein String tatsächlich so aussieht kannst den auch mit s.split"]+[" auftrennen... Dann hast die Zahl schon mal einzelnd. Und vom dritten teil musst du nurnoch das letzte Zeichen abschneiden...
-
split() nimmt auch eine RegEx, dementsprechend wird ]\+[ nötig sein, oder, da bin ich mir aber nicht sicher, sogar ]\+[
MfG SideWinder
-
String s = "[NACHRICHT]+[55]+[unbekanter String]";
String zwei[] = s.split("\]\+\[");
System.out.println(zwei.length);
-
Ungetestest:
String str = "[NACHRICHT]+[55]+[unbekanter String]"; Pattern p = Pattern.compile("\[.*?\]"); Matcher m = p.matcher(str); while(m.find()) { // hier kommt nach der reihe [NACHRICHT] dann [55] dann [unbekannter String] // durch m.start() und m.end() }
Edit: Wenn deine Strings nie aus mehr "Feldern" bestehen werden, dann ist die Variante von Sqwan wahrscheinlich einfacher.
MfG SideWinder
-
geht nicht. Invalid escape sequence
-
Sqwan schrieb:
geht nicht. Invalid escape sequence
Hab doch nur vergessen die \ doppelt zu machen. Darauf hätte auch der OP kommen können
MfG SideWinder
-
String str = "[NACHRICHT]+[55]+[unbekanter String]";
Pattern p = Pattern.compile("\[.*?]");
Matcher m = p.matcher(str);
String zeile;while(m.find())
{
System.out.println(m.start()+" : "+m.end());
// hier kommt nach der reihe [NACHRICHT] dann [55] dann [unbekannter String]
// durch m.start() und m.end()
}So läuft es bei mir...
EDIT: Was mich ein wenig wundert ^^ wegen der eckigen klammern
EDIT2:
0 : 11
12 : 16
17 : 36 ausgabe
-
Wenn schon regex, warum dann nicht auch capturing groups verwenden?