Julia: amélioration split(), keep_splitter

Créé le 16 févr. 2017  ·  3Commentaires  ·  Source: JuliaLang/julia

Bonjour,

Je voudrais suggérer une demande de fonctionnalité, sur laquelle je travaille maintenant dans une nouvelle branche, pour la fonction split(str, splitter; limit=0, keep=true) .

Je me suis retrouvé à essayer d'utiliser la fonction de cette manière, et ce à quoi je m'attends en quelque sorte est ce qui suit,

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

Dois-je continuer à travailler ? Serait-ce un changement radical pour le reste de l'écosystème ?

Quelques idées:

  • Si le drapeau keep_spliter est true , cela ne devrait pas faire de différence si keep (qui signifie résultats vides) est true ou false , car il n'y aurait pas du tout de résultats vides.
  • Je ne sais pas s'il faut inclure un autre indicateur pour inclure le séparateur uniquement dans la sous-chaîne suivante ou dans la précédente. C'est ainsi readlines(file) fonctionne '\n' à la fin.
julia> split("abcabcdabbcd", "b"; keep_splitter = true, prepend = false)
3-element Array{SubString{String},1}:
 "ab"   
 "cab" 
 "cdab"
 "b"
 "cd"

Merci d'avance!

PS, peut-être que cela peut être fait avec une autre fonction que je ne connais pas encore

collections design strings

Commentaire le plus utile

Cela se produit également lorsque vous essayez de diviser les chaînes de cas de chameau :

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

Une solution consiste à utiliser un délimiteur regex : split(foo, r"(?=[A-Z])") mais c'est beaucoup moins intuitif (et je ne l'aurais pas résolu sans aide extérieure).

Tous les 3 commentaires

Lié à une éventuelle fonction splitlines (https://github.com/JuliaLang/julia/pull/20390), et au nouvel argument chomp de readline / eachline (https://github.com/JuliaLang/julia/pull/19944, https://github.com/JuliaLang/julia/pull/19944).

Cc : @mpastell

Notez qu'une autre façon de regarder le mot-clé keep actuel, en réalité, c'est de dire que votre séparateur peut être répété 1 ou plusieurs fois, c'est-à-dire l'envelopper implicitement dans un (...)+ tant que regex.

Cela se produit également lorsque vous essayez de diviser les chaînes de cas de chameau :

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

Une solution consiste à utiliser un délimiteur regex : split(foo, r"(?=[A-Z])") mais c'est beaucoup moins intuitif (et je ne l'aurais pas résolu sans aide extérieure).

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

yurivish picture yurivish  ·  3Commentaires

Keno picture Keno  ·  3Commentaires

iamed2 picture iamed2  ·  3Commentaires

StefanKarpinski picture StefanKarpinski  ·  3Commentaires

sbromberger picture sbromberger  ·  3Commentaires