Julia: split()の機能強化、keep_splitter

作成日 2017年02月16日  ·  3コメント  ·  ソース: JuliaLang/julia

こんにちは、

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 (空の結果を表す)がtruefalseかに違いはありません。
  • スプリッターを次のサブストリングだけに含めるのか、前のサブストリングに含めるのか、他のフラグを含めるかどうかはわかりません。 これがreadlines(file)仕組みですよね? 配列の各要素の最後に'\n'があります。
julia> split("abcabcdabbcd", "b"; keep_splitter = true, prepend = false)
3-element Array{SubString{String},1}:
 "ab"   
 "cab" 
 "cdab"
 "b"
 "cd"

前もって感謝します!

PS、多分それは私がまだ知らない別の機能で行うことができます

collections design strings

最も参考になるコメント

これは、キャメルケースの文字列を分割しようとしたときにも発生します。

foo = "ThisShouldBeSeparate"
split(foo, isuppercase)
5-element Array{SubString{String},1}:
 ""
 "his"
 "hould"
 "e"
 "eparate"

解決策は、正規表現区切り文字split(foo, r"(?=[A-Z])")を使用することですが、それははるかに直感的ではありません(そして、外部の助けがなければ解決できなかったでしょう)。

全てのコメント3件

可能な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])")を使用することですが、それははるかに直感的ではありません(そして、外部の助けがなければ解決できなかったでしょう)。

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

musm picture musm  ·  3コメント

sbromberger picture sbromberger  ·  3コメント

omus picture omus  ·  3コメント

wilburtownsend picture wilburtownsend  ·  3コメント

yurivish picture yurivish  ·  3コメント