こんにちは、
split(str, splitter; limit=0, keep=true)
関数について、現在新しいブランチで作業している機能リクエストを提案したいと思います。
そのように関数を使おうとしていることに気づきましたが、どういうわけか期待しているのは次のとおりです。
julia> split("abcabcdabbcd", "b"; keep_splitter = true)
3-element Array{SubString{String},1}:
"a"
"bca"
"bcda"
"b"
"bcd"
私は働き続けるべきですか? それは残りのエコシステムにとって壊滅的な変化でしょうか?
いくつかのアイデア:
keep_spliter
フラグがtrue
場合、 keep
(空の結果を表す)がtrue
かfalse
かに違いはありません。 readlines(file)
仕組みですよね? 配列の各要素の最後に'\n'
があります。julia> split("abcabcdabbcd", "b"; keep_splitter = true, prepend = false)
3-element Array{SubString{String},1}:
"ab"
"cab"
"cdab"
"b"
"cd"
前もって感謝します!
PS、多分それは私がまだ知らない別の機能で行うことができます
可能なsplitlines
関数(https://github.com/JuliaLang/julia/pull/20390)、およびreadline
/ eachline
への新しいchomp
引数に関連しますeachline
(https://github.com/JuliaLang/julia/pull/19944、https://github.com/JuliaLang/julia/pull/19944)。
Cc: @mpassel
現在のkeep
キーワードを別の方法で見ると、実際には、スプリッターを1回以上繰り返すことができます。つまり、正規表現として暗黙的に(...)+
ラップすることができます。
これは、キャメルケースの文字列を分割しようとしたときにも発生します。
foo = "ThisShouldBeSeparate"
split(foo, isuppercase)
5-element Array{SubString{String},1}:
""
"his"
"hould"
"e"
"eparate"
解決策は、正規表現区切り文字split(foo, r"(?=[A-Z])")
を使用することですが、それははるかに直感的ではありません(そして、外部の助けがなければ解決できなかったでしょう)。
最も参考になるコメント
これは、キャメルケースの文字列を分割しようとしたときにも発生します。
解決策は、正規表現区切り文字
split(foo, r"(?=[A-Z])")
を使用することですが、それははるかに直感的ではありません(そして、外部の助けがなければ解決できなかったでしょう)。