Quelle est la fonction Ruby pour supprimer tous les espaces blancs ? Je recherche quelque chose de semblable à trim()
en PHP ?
Est-ce que "/\s+/" simple signifie simplement espace blanc?
Quelle est la fonction Ruby pour supprimer tous les espaces blancs ? Je recherche quelque chose de semblable à trim()
en PHP ?
\s+ signifie 1 ou plusieurs caractères d'espace blanc (espace, saut de ligne, tabulation). Les // qui entourent montrent qu'il s'agit d'une expression régulière.
Ceci est beaucoup plus lisible que les expressions régulières, pourquoi n'est-ce pas aussi populaire?
@ckarbass : Parce que beaucoup de gens préfèrent des solutions trop complexes aux problèmes simples. Cela part avec l'expérience.
Je pense que c'est parce que beaucoup de personnes recherchent en réalité "strip". Même celui qui mentionne seulement "strip" est mieux classé que cette entrée.
C'est celui que j'avais oublié. Je savais qu'il y avait une méthode pour supprimer les espaces blancs qui le ferait par défaut si aucun argument n'était passé. +1
Si il y a une possibilité que la variable soit nil
, assurez-vous d'exécuter la méthode .to_s
avant d'exécuter la méthode strip afin que la méthode strip ne génère pas d'erreur. Par exemple, str=nil; str.to_s.strip #=> ""
Si vous utilisez Rails/ActiveSupport, vous pouvez utiliser la méthode squish
. Elle supprime les espaces blancs aux deux extrémités de la chaîne et regroupe les espaces blancs multiples en un seul espace.
Par exemple.
" a b c ".squish
résultera en:
"a b c"
Vérifiez cette référence sur api.rubyonrails.org.
Notez que les réponses contenant uniquement un lien sont découragées, les réponses sur SO devraient être le point final d'une recherche de solution (plutôt qu'une simple étape supplémentaire vers des références qui ont tendance à devenir obsolètes avec le temps). Merci de bien vouloir ajouter un résumé indépendant ici, en gardant le lien comme référence.
Je pense que cette réponse a été suffisamment expliquée et le fait que le lien était une référence puisque la réponse elle-même était clairement expliquée. Cette fonction était bonne, merci.
Ceci provient de ActiveSupport. Vous n'avez pas besoin de toute Rails pour l'utiliser, mais vous avez besoin au moins d'ActiveSupport et d'un require 'active_support/core_ext/string/filters'
"1232 23 2 23 232 232".delete(' ')
=> "123223223232232"
Supprimer fonctionne plus rapidement =)
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, espace 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)
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.
36 votes
Votre question n'est pas claire : voulez-vous supprimer tous les espaces vides ou voulez-vous vous débarrasser des espaces vides en début et en fin de chaîne?
26 votes
PHP's
trim()
supprime les espaces blancs "du début et de la fin d'une chaîne de caractères" (comme indiqué dans la documentation), il ne supprime pas "tous les espaces blancs".3 votes
Quand vous avez un doute, consultez la documentation en ligne de Ruby pour la classe String (voir .strip ci-dessous).
3 votes
Notez que toutes les réponses utilisant
String#strip
ou correspondant à/\s+/
ne supprimeront que les espaces blancs ASCII. Si vous souhaitez vous assurer que tout espace blanc non-ASCII est également capturé (par exemple, le de HTML), consultez la réponse curieusement impopulaire de @EBooker.1 votes
Dommage que de si bonnes réponses ne puissent pas bénéficier de la dignité finale d'être acceptées