Question Fonction Ruby pour supprimer tous les espaces blancs?


Quelle est la fonction Ruby à supprimer tout espace blanc? Un peu comme les php trim()?


481
2017-10-28 01:53


origine


Réponses:


Si vous voulez supprimer uniquement les espaces en début et en fin de ligne (comme le découpage de PHP), vous pouvez utiliser .strip, mais si vous voulez supprimer tout espace, vous pouvez utiliser .gsub(/\s+/, "") au lieu .


751
2017-10-28 02:13



s = "I have white space".delete(' ')

Et pour émuler PHP trim() fonction:

s = "   I have leading and trailing white space   ".strip

439
2017-10-28 01:54



Réponse connexe:

"   clean up my edges    ".strip

résultats

"clean up my edges"

151
2017-10-28 01:54



String#strip - supprimer tous les espaces du début et de la fin.

String#lstrip - Juste depuis le début.

String#rstrip - Juste à la fin.

String#chomp (sans arguments) - supprime les séparateurs de lignes (\n ou \r\n) à partir de la fin.

String#chop - supprime le dernier caractère.

String#delete - x.delete(" \t\r\n") - supprime tous les espaces listés.

String#gsub - x.gsub(/[[:space:]]/, '') - supprime tous les espaces, y compris unicode.


Remarque: Toutes les méthodes ci-dessus renvoient une nouvelle chaîne au lieu de muter l'original. Si vous voulez changer la chaîne en place, appelez la méthode correspondante avec ! à la fin.


87
2018-05-10 20:23



"1232 23 2 23 232 232".delete(' ')
=> "123223223232232"

Supprimer fonctionne plus vite =)

user         system     total      real
gsub, s      0.180000   0.010000   0.190000 (0.193014)
gsub, s+     0.200000   0.000000   0.200000 (0.196408)
gsub, space  0.220000   0.000000   0.220000 (0.222711)
gsub, join   0.200000   0.000000   0.200000 (0.193478)
delete       0.040000   0.000000   0.040000 (0.045157)

86
2017-07-04 11:55



Vous pouvez utiliser squish méthode. Il supprime l'espace blanc aux deux extrémités de la chaîne et regroupe plusieurs espaces blancs en un seul espace.

Par exemple.

" a  b  c ".squish

entraînera:

"a b c"

Vérifier cette référence de api.rubyonrails.org.

MODIFIER: Cela ne fonctionne que pour ruby ​​sur rails


73
2017-10-17 10:51



Il est un peu tard, mais quelqu'un d'autre googling cette page pourrait être intéressé par cette version -

Si vous souhaitez nettoyer un morceau de texte pré-formaté qu'un utilisateur peut avoir copié-collé dans votre application, tout en conservant l'espacement des mots, essayez ceci:

content = "      a big nasty          chunk of     something

that's been pasted                        from a webpage       or something        and looks 

like      this

"

content.gsub(/\s+/, " ").strip

#=> "a big nasty chunk of something that's been pasted from a webpage or something and looks like this"

46
2018-01-18 11:58



Ruby's .strip méthode effectue l'équivalent PHP à trim().

Pour supprimer tous les espaces:

"  leading    trailing   ".squeeze(' ').strip
=> "leading trailing"

@Tass m'a fait comprendre que ma réponse originale supprime les lettres en double successivement - YUCK! Je suis depuis passé à la méthode squish qui est plus intelligente sur de telles occurrences si vous utilisez le framework Rails.

require 'active_support/all'
"  leading    trailing   ".squish
=> "leading trailing"

"  good    men   ".squish
=> "good men"

Citer: http://apidock.com/rails/String/squish


43
2018-05-08 07:21



" Raheem Shaik ".strip

Il supprimera les espaces latéraux gauche et droit. Ce code nous donnerait: "Raheem Shaik"


25
2017-10-02 06:08



N'oubliez pas non plus:

$ s = "   I have white space   ".split
=> ["I", "have", "white", "space"]

20
2017-10-28 01:58