51 votes

Split sur différentes lignes

Pour le moment, je fais un split sur une chaîne et je suppose que la nouvelle ligne de l'utilisateur est \r\n comme ceci:

 string.split(/\r\n/)
 

Ce que j'aimerais faire est de scinder \r\n ou juste \n .

Alors, comment serait la regex de diviser sur l'un ou l'autre?

75voto

NickAldwin Points 4494

Avez-vous essayé /\r?\n/ ? Le ? rend le \r optionnel.

Exemple d'utilisation: http://rubular.com/r/1ZuihD0YfF

17voto

23inhouse Points 820

Ruby méthodes d' String#each_line et String#lines

retourne une énumération: http://www.ruby-doc.org/core-1.9.3/String.html#method-i-each_line

retourne un tableau: http://www.ruby-doc.org/core-2.1.2/String.html#method-i-lines

Je n'ai pas tester votre scénario mais je parie qu'il fonctionnera mieux que de choisir manuellement les caractères de saut de ligne.

15voto

Phrogz Points 112337
 # Split on \r\n or just \n
string.split( /\r?\n/ )
 

Bien que la question ne vous soit pas utile (lorsque vous avez besoin d'une expression régulière), notez que String#split ne nécessite pas d'argument d'expression régulière. Votre code d'origine pourrait également avoir été string.split( "\r\n" ) .

3voto

Jörg W Mittag Points 153275

L'alternance de l'opérateur en Ruby Regexp est le même que dans le standard des expressions régulières: |

Donc, la solution évidente serait

/\r\n|\n/

qui est le même que

/\r?\n/

c'est à dire une option \r suivie par un mandataire \n.

1voto

SjoerdRavn Points 11

Peut-être faire un split sur uniquement "\n " et d'enlever le '\r', s'il existe?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X