Die Split-Funktionalität scheint zwischen Java und JavaScript zu unterscheiden.Java vs JavaScript Split-Verhalten
Ich muss nicht unbedingt bestimmte Kriterien für reguläre Ausdrücke erfüllen oder Lookahead basierte Regex verwenden. Mein Problem besteht darin, dass leere Übereinstimmungen nach dem letzten Matching der geteilten Regex gezogen werden (was eine einfache Menge von Zeichen und kein Ausdruck ist).
Unten ist ein Beispiel für die Ausgabe, die ich versuche zu erreichen und was ich wirklich bekomme.
Java
("~#~~#~~#~A~#~B~#~C~#~D~#~E~#~~#~~#~").split("~#~")
/* results with an array of length 8 */ (java.lang.String[]) [, , , A, B, C, D, E]
Javascript
"~#~~#~~#~A~#~B~#~C~#~D~#~E~#~~#~~#~".split("~#~")
/* results with an array of length 11 */ ["", "", "", "A", "B", "C", "D", "E", "", "", ""]
Ich kann wirklich nicht für diese meine Hände auf eine gute Erklärung setzen, wie ich mit einer Java-Anwendung arbeite und die Spaltung ist verursacht mir Probleme, ich möchte das gleiche Ergebnis wie in JavaScript. Wie kann ich das bekommen?
Trotz des Namens Ähnlichkeiten eine überladene Methode ist (vielleicht jemals die dümmste Entscheidung), sind sie verschiedene Sprachen tatsächlich. Sie werden feststellen, dass der "Split" in C auch anders funktioniert (indem er sich darüber beschwert, dass er es meistens nicht finden kann). – paxdiablo
Wie macht es überhaupt Sinn, dass Java die leeren Strings am Ende des Splits auslässt, aber nicht die vorhergehenden? Das Ergebnis, das Javascript Ihnen gibt, macht viel mehr Sinn. – connexo
@connexo: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split%28java.lang.String%29: 'Nachlaufende leere Zeichenfolgen sind daher nicht in der resulting array.' – paxdiablo