| 

.NET C# Java Javascript Exception

4
Ich habe einen String "IchBinEinString" in einer Variable und möchte ihn jeweils an den Großbuchstaben aufsplitten, die dann in neuen Variablen gespeichert werden sollen. Wie bei dem Beispiel: "Ich", "Bin", "Ein" und "String". Gibts dafür in XQuery eine Funktion oder wie könnte ich das am besten lösen?
17.01.2012
ana12 21 1
2 Antworten
2
Hm, eine Funktion, die direkt das kann, wüßte ich nicht, aber Du könntest versuchen, erst hinter jedem Großbuchstaben ein Leerzeichen einzufügen und dann an diesen Leerzeichen den String zu zerteilen, etwa so (ungetestet):
tokenize(replace(deinString, "([A-Z])", "$1 "), "\s")
17.01.2012
Matthias Hlawatsch 8,4k 2 8
1
Ein passender RegEx-Ausdruck wäre:

(?=[A-Z])

Ich hab zwar noch nie was mit XQuery in zusammenarbeit mit RegEx gemacht aber laut den Informationen die ich gefunden habe, soll es mit der fn:tokenize gehen.

Example: fn:tokenize("IchBinEinString", "(?=[A-Z])")
Result: ["Ich", "Bin", "Ein", "String"]
17.01.2012
Floyd 11,0k 3 9
Floyd 11,0k 3 9
Hi Floyd, kannst Du noch was zu der (?=...)-Syntax sagen? Die schnall ich grad nicht. Unter Deinem Link steht "The separators are not included in the result strings". Das würde erst mal bedeuten, dass die Anfangsbuchstaben im Ergebnis fehlen, oder?
Matthias Hlawatsch 17.01.2012
2
Korrekt, in RegEx gibt es aber neben den normalen Match was "[A-Z]" wäre noch die Möglichkeit bevorstehnde und nachfolgende Strings zu prüfen ohne diese direkt in das Match mit aufzunehmen. Dieses nennd man dann "lookaround". In diesem Fall steht das "?=" für ein "positive lookahead".
Eine gute Einfürung zu dem Thema: http://www.regular-expressions.info/lookaround.html
Floyd 17.01.2012
+1 sowohl für die Antwort als auch den Link zu den lookarounds - wieder was gelernt. Clevere Idee...
Matthias Hlawatsch 17.01.2012

Stelle deine Web-Frage jetzt!