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 (代表空结果)是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,也许可以用我还不知道的另一个功能来完成

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)。

抄送: @mpastell

请注意,查看当前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 等级