Wie kann ich einen string nach mehreren Zeichen splitten in Java?
Zb
<1,23,56><23,67,8><1,2,3> in ein array sodass
array[0]=1, array [1]=23, array[2]=56 array [3]=23 etc
Ich hab bereits Split(,) probiert das klappt auch soweit aber da ist array[2]=56><23 das wollte ich natürlich nicht
In Java
3 Antworten
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Java, Programmieren & Softwareentwicklung
Ich würde alle >< mit Komma ersetzen, die übrigen < und > (vorne und hinten) entfernen, und dann einfach beim Komma splitten.
Und das erhaltene String-Array dann noch zu einem int-Array mappen.
String input = "<12,3,4><13,5,2><1,2,3>";
int[] array = Stream.of(input.replaceAll("><", ",").replaceAll(">|<", "").split(",")).mapToInt(Integer::parseInt).toArray();
Edit: Man kann auch einfach bei Komma ODER >< splitten.
int[] array = Stream.of(input.replaceAll("^<|>$", "").split(",|(><)")).mapToInt(Integer::parseInt).toArray();
Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf
import java.util.*;
import java.util.regex.*;
public class MeineKlasse {
public static void main(String[] args) {
String input = "<1,23,56><23,67,8><1,2,3>";
// Lösung mit ersetzen:
String daten = input.replaceAll("[<>]+", ",");
String[] array1 = daten.split(",");
System.out.println(Arrays.toString(array1));
// Lösung mit RegEx im split
String[] array2 = input.split("[<>,]+");
System.out.println(Arrays.toString(array2));
// Lösung mit Scanner
Scanner scanner = new Scanner(input);
int[] array3 = scanner.findAll("\\d+").mapToInt(match -> Integer.parseInt(match.group())).toArray();
scanner.close();
System.out.println(Arrays.toString(array3));
// Lösung mit RegEx
int[] array4 = Pattern.compile("\\d+").matcher(input).results().mapToInt(match -> Integer.parseInt(match.group())).toArray();
System.out.println(Arrays.toString(array4));
}
}
Mit einem regulären Ausdruck hast du das schnell gelöst