Domino 9 und frühere Versionen > ND9: Entwicklung

Fehler bei Split bzw. StrToken mit leeren Werten

<< < (2/3) > >>

jBubbleBoy:
Verwende vorher ein Replace:


--- Code: ---Dim s$, v
s = "1~~~~~~3"
s = Replace(s,"~~","#")
v = Split(s,"#")

s = ""
ForAll x In v
s = s + Chr(10) + x
End ForAll

MsgBox s

--- Ende Code ---

dann klappt es

Jürgen Schomann:
Vielen Dank für den Hinweis. diese Idee hatte ich auch schon aber dann wieder verworfen.
Z. B. wird dies dann falsch:

s = "1~~~~#3"

nach Replace(s, "~~", "#") wird s = "1###3"
und Split(s, "#") liefert dann 1, leer, leer, 3 statt richtig 1, leer, #3

jBubbleBoy:
# war nur ein Beispiel, ich verwende gern seltene, vom User & System so gut wie nie verwendete Zeichen, z.B. die Schildkröte: ¤
Und die ist noch unwahrscheinlicher als die Tilde ~  ;)
Aber ein Restrisiko gibt es immer, wenn alle Zeichen vorkommen können.

jBubbleBoy:
Ergänzend möchte ich noch erwähnen, das man dem Problem vorbeugen kann indem man keine einfache Trennzeichenfolge wählt, z.B:

--- Code: ---Dim s$, v
s = "1~¤~¤~¤3"
v = Split(s,"~¤")

s = ""
ForAll x In v
s = s + Chr(10) + x
End ForAll

MsgBox s

--- Ende Code ---
Also ~¤ anstatt ~~ und auch das, nur ein Beispiel, der Key kann beliebig lang sein.
Das sollte man machen, wenn wirklich alles an Zeichen vorkommt. Kann auch für ein Replace genutzt werden, wenn ~~ eine feste Vorgabe ist.

Peter Klett:
Zwei gleiche Zeichen als Trennzeichen zu verwenden, um das Vorhandensein eines Zeichens in den Daten zu ermöglichen, ist m.E. nicht wirklich eine gute Idee. Was sollte bei

Split ("1~~~~~3", "~~") herauskommen?

1

~3

und

1
~
3

sind beides gültige Ergebnisse und zeigen, dass es nicht funktionieren kann.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln