Julia: split() peningkatan, keep_splitter

Dibuat pada 16 Feb 2017  ·  3Komentar  ·  Sumber: JuliaLang/julia

Halo,

Saya ingin menyarankan permintaan fitur, yang sekarang sedang saya kerjakan di cabang baru, untuk fungsi split(str, splitter; limit=0, keep=true) .

Saya mendapati diri saya mencoba menggunakan fungsi dengan cara itu, dan apa yang saya harapkan entah bagaimana adalah sebagai berikut,

julia> split("abcabcdabbcd", "b"; keep_splitter = true)
3-element Array{SubString{String},1}:
 "a"   
 "bca" 
 "bcda"
 "b"
 "bcd"

Haruskah saya terus bekerja? Apakah ini akan menjadi perubahan besar bagi ekosistem lainnya?

Beberapa ide:

  • Jika flag keep_spliter adalah true , maka seharusnya tidak ada bedanya apakah keep (yang berarti hasil kosong), adalah true atau false , karena, tidak akan ada hasil kosong sama sekali.
  • Saya tidak yakin apakah akan menyertakan beberapa flag lain untuk menyertakan splitter hanya ke substring berikutnya atau ke yang sebelumnya. Ini adalah cara kerja readlines(file) , bukan? Di setiap elemen array kita memiliki '\n' di akhir.
julia> split("abcabcdabbcd", "b"; keep_splitter = true, prepend = false)
3-element Array{SubString{String},1}:
 "ab"   
 "cab" 
 "cdab"
 "b"
 "cd"

Terima kasih sebelumnya!

PS, mungkin bisa dilakukan dengan fungsi lain saya belum tahu

collections design strings

Komentar yang paling membantu

Ini juga muncul ketika mencoba membagi string kotak unta:

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

Solusinya adalah dengan menggunakan pembatas regex: split(foo, r"(?=[A-Z])") tetapi itu jauh lebih tidak intuitif (dan saya tidak akan menyelesaikannya tanpa bantuan dari luar).

Semua 3 komentar

Terkait dengan kemungkinan fungsi splitlines (https://github.com/JuliaLang/julia/pull/20390), dan dengan argumen chomp ke readline / eachline (https://github.com/JuliaLang/julia/pull/19944, https://github.com/JuliaLang/julia/pull/19944).

Cc: @mpastell

Perhatikan bahwa cara lain untuk melihat kata kunci keep , yang sebenarnya adalah mengatakan bahwa splitter Anda dapat diulang 1 kali atau lebih, yaitu secara implisit membungkusnya dalam (...)+ sebagai regex.

Ini juga muncul ketika mencoba membagi string kotak unta:

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

Solusinya adalah dengan menggunakan pembatas regex: split(foo, r"(?=[A-Z])") tetapi itu jauh lebih tidak intuitif (dan saya tidak akan menyelesaikannya tanpa bantuan dari luar).

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

TotalVerb picture TotalVerb  ·  3Komentar

yurivish picture yurivish  ·  3Komentar

felixrehren picture felixrehren  ·  3Komentar

Keno picture Keno  ·  3Komentar

sbromberger picture sbromberger  ·  3Komentar