Je vous recommande d'utiliser lines
au lieu de split
pour cette tâche. lines
conservera la fuite de saut de ligne, qui vous permet de voir l'souhaité empty-line. Utiliser chomp
nettoyer:
"aaaa\nbbbb\n\n".lines.map(&:chomp)
[
[0] "aaaa",
[1] "bbbb",
[2] ""
]
D'autres, plus compliquées, les moyens d'y arriver sont:
"aaaa\nbbbb\n\n".split(/(\n)/).each_slice(2).map{ |ary| ary.join.chomp }
[
[0] "aaaa",
[1] "bbbb",
[2] ""
]
C'est en prenant avantage de l'utilisation d'une méthode de capture-groupe en split
, ce qui renvoie le fractionner le texte avec l'intervenant texte divisé sur. each_slice
des groupes les éléments en deux-élément sous-tableaux. map
obtient chaque élément du sous-tableau, ne l' join
, suivie par l' chomp
.
Ou:
"aaaa\nbbbb\n\n".split(/(\n)/).delete_if{ |e| e == "\n" }
[
[0] "aaaa",
[1] "bbbb",
[2] ""
]
Voici ce qu' split
est de retour:
"aaaa\nbbbb\n\n".split(/(\n)/)
[
[0] "aaaa",
[1] "\n",
[2] "bbbb",
[3] "\n",
[4] "",
[5] "\n"
]
Nous n'avons pas utilisé très souvent, mais il peut être utile.