Hallo,
Ich möchte eine Feature-Anfrage, an der ich gerade in einem neuen Branch arbeite, für die Funktion split(str, splitter; limit=0, keep=true)
vorschlagen.
Ich habe versucht, die Funktion auf diese Weise zu verwenden, und was ich irgendwie erwarte, ist Folgendes:
julia> split("abcabcdabbcd", "b"; keep_splitter = true)
3-element Array{SubString{String},1}:
"a"
"bca"
"bcda"
"b"
"bcd"
Soll ich weiterarbeiten? Wäre es eine bahnbrechende Veränderung für den Rest des Ökosystems?
Einige Ideen:
keep_spliter
Flag true
, dann sollte es keinen Unterschied machen, ob keep
(was für leere Ergebnisse steht) true
oder false
, da es keine leeren Ergebnisse geben würde.readlines(file)
, nicht wahr? In jedem Element des Arrays haben wir am Ende '\n'
.julia> split("abcabcdabbcd", "b"; keep_splitter = true, prepend = false)
3-element Array{SubString{String},1}:
"ab"
"cab"
"cdab"
"b"
"cd"
Danke im Voraus!
PS, vielleicht geht das mit einer anderen Funktion, die ich noch nicht kenne
Bezogen auf eine mögliche splitlines
Funktion (https://github.com/JuliaLang/julia/pull/20390) und auf das neue chomp
Argument zu readline
/ eachline
(https://github.com/JuliaLang/julia/pull/19944, https://github.com/JuliaLang/julia/pull/19944).
CC :
Beachten Sie, dass eine andere Betrachtungsweise des aktuellen keep
Schlüsselworts tatsächlich besagt, dass Ihr Splitter ein- oder mehrmals wiederholt werden kann, dh implizit als Regex in ein (...)+
Zeichen gepackt wird.
Dies tritt auch auf, wenn versucht wird, Camel-Case-Strings zu teilen:
foo = "ThisShouldBeSeparate"
split(foo, isuppercase)
5-element Array{SubString{String},1}:
""
"his"
"hould"
"e"
"eparate"
Eine Lösung besteht darin, ein Regex-Trennzeichen zu verwenden: split(foo, r"(?=[A-Z])")
aber das ist weit weniger intuitiv (und ich hätte es ohne externe Hilfe nicht gelöst).
Hilfreichster Kommentar
Dies tritt auch auf, wenn versucht wird, Camel-Case-Strings zu teilen:
Eine Lösung besteht darin, ein Regex-Trennzeichen zu verwenden:
split(foo, r"(?=[A-Z])")
aber das ist weit weniger intuitiv (und ich hätte es ohne externe Hilfe nicht gelöst).