String.split funktiniert nnicht mit pipe ( | )

  • Antworten:3
  • Bentwortet
Phil
  • Forum-Beiträge: 40

31.01.2011, 11:04:57 via Website

Hallo,
ich habe folgendes, scheinbar simples Problem, aber ich finde keine Lösung.

Ich habe einen String und möchte diesen anhand eines Zeichen in ein Array packen:
1String orginal = "das ist|mein|String";
2String neu[] = orginal.split("|");
Eigentlich sollte das Ergbnis ja nun so aussehen:
1neu[0] = "das ist";
2neu[1] = "mein";
3neu[2] = "String";
Leider sieht das Ergbnis ein bisschen anders aus:
1neu[0] = "d";
2neu[1] = "a";
3neu[2] = "s";
4neu[3] = "|";
5//...

Tausche ich zb. die Pipe (|) durch die Raute (#) aus funktioniert es.
Leider bin ich auf die Pipe angewiesen und kann diese nicht einfach so tauschen.

Hat jemand vllt eine Idee, warum das nicht funktioniert und wie man es zum laufen bekommt?

danke
phil

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

31.01.2011, 11:40:16 via Website

ich weiß nicht, warum die pipe probleme macht, aber als alternative

tausche alle pipes durch # vor dem split

kannst es danach wieder zurück tauschen.

sicher nicht das beste, aber vielleicht hilfts

swordiApps Blog - Website

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

31.01.2011, 11:41:24 via Website

Das Problem ist, dass split() eine Regular Expression erwartet und den String den du übergibst als RegEx interpretiert.

Siehe: http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

Pipe ist in RegEx der OR-Operator ... also musst du es maskieren, wenn du es explizit als Zeichen verwenden willst.

Probier mal:

1.split("\\|")

— geändert am 31.01.2011, 11:43:59

Antworten
Phil
  • Forum-Beiträge: 40

31.01.2011, 12:23:57 via Website

Rafael K.
Das Problem ist, dass split() eine Regular Expression erwartet und den String den du übergibst als RegEx interpretiert.

Siehe: http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

Pipe ist in RegEx der OR-Operator ... also musst du es maskieren, wenn du es explizit als Zeichen verwenden willst.

Probier mal:

1.split("\\|")
Ahhh ... zu dumm. Ok, jetzt funktioniert es.

Vielen Dank.

Phil

Antworten