Olá,
Eu gostaria de sugerir uma solicitação de recurso, na qual estou trabalhando agora em um novo branch, para a função split(str, splitter; limit=0, keep=true)
.
Eu me peguei tentando usar a função dessa forma, e o que espero de alguma forma é o seguinte,
julia> split("abcabcdabbcd", "b"; keep_splitter = true)
3-element Array{SubString{String},1}:
"a"
"bca"
"bcda"
"b"
"bcd"
Devo continuar trabalhando? Seria uma mudança significativa para o resto do ecossistema?
Algumas ideias:
keep_spliter
for true
, então não deve fazer nenhuma diferença se keep
(que significa resultados vazios), é true
ou false
, visto que não haveria resultados vazios.readlines(file)
funciona, não é? Em cada elemento do array temos '\n'
no final.julia> split("abcabcdabbcd", "b"; keep_splitter = true, prepend = false)
3-element Array{SubString{String},1}:
"ab"
"cab"
"cdab"
"b"
"cd"
Desde já, obrigado!
PS, talvez isso possa ser feito com outra função que ainda não conheço
Relacionado a uma possível função splitlines
(https://github.com/JuliaLang/julia/pull/20390) e ao novo argumento chomp
para readline
/ eachline
(https://github.com/JuliaLang/julia/pull/19944, https://github.com/JuliaLang/julia/pull/19944).
Cc: @mpastell
Observe que outra maneira de olhar para a palavra-chave keep
atual, o que ela realmente faz é dizer que seu divisor pode ser repetido 1 ou mais vezes, ou seja, envolvê-lo implicitamente em (...)+
como um regex.
Isso também surge ao tentar dividir strings de caixa de camelo:
foo = "ThisShouldBeSeparate"
split(foo, isuppercase)
5-element Array{SubString{String},1}:
""
"his"
"hould"
"e"
"eparate"
Uma solução é usar um delimitador regex: split(foo, r"(?=[A-Z])")
mas isso é muito menos intuitivo (e eu não teria resolvido sem ajuda externa).
Comentários muito úteis
Isso também surge ao tentar dividir strings de caixa de camelo:
Uma solução é usar um delimitador regex:
split(foo, r"(?=[A-Z])")
mas isso é muito menos intuitivo (e eu não teria resolvido sem ajuda externa).