String mit "\r\n" splitten

firmadankt

Mitglied
Ich brauche eine Methode, die folgendes macht:

Code:
String s = "\r\n1\r\n2\r\n\r\n3\r\n\r\n";
        List<String> r = split(s);

        /*
         r enthält folgendes:
          "",
          "1",
          "",
          "2",
          "",
          "",
          "3",
          "",
          "",
         */

Meine Ansätze sind:

Code:
private static List<String> split(String s) {
        return Arrays.asList(s.split("\r\n"));
    }

    private static List<String> split2(String s) {
        List<String> r = new ArrayList<String>();
        StringTokenizer stringTokenizer = new StringTokenizer("\r\n");
        while (stringTokenizer.hasMoreTokens()) {
            r.add(stringTokenizer.nextToken());
        }

        return r;
    }

Leider sind die Ergebnisse nicht wirklich zufriedenstellend. Jemand eine Idee?
 
Wenn du dir mal die Dokumentation von split anschaust wirst du merken warum das damit nicht geht.

Mir ist eine Lösung mit indexOf eingefallen. Ich weiss aber nicht ob das die Beste ist:
Java:
	public static void main(String[] args) {
		String s = "\r\n1\r\n2\r\n\r\n3\r\n\r\n";

		List<String> lst = new ArrayList<String>();
		int ix = 0;
		while ((ix = s.indexOf("\r\n")) != -1) {
			lst.add(s.substring(0, ix));
			if (ix != 0) {
				lst.add("");
			}
			s = s.substring(ix + 2);
		}
		System.out.println(lst);
	}
 
Zurück