web-dev-qa-db-fra.com

Supprimer plusieurs espaces et nouvelles lignes à l'intérieur de String

Supposons que nous ayons une chaîne comme ceci:

Hello, my\n       name is Michael.

Comment puis-je supprimer cette nouvelle ligne et supprimer ces espaces dans une chaîne à l'intérieur de la chaîne pour l'obtenir?

Hello, my name is Michael.
83
Kreeki

découvrez la méthode squish de Rails:

http://apidock.com/Rails/String/squish

158
socjopata

Pour illustrer Rubys construit dans squeeze :

string.gsub("\n", ' ').squeeze(' ')
33
steenslag

Le moyen le plus simple serait probablement

s = "Hello, my\n       name is Michael."
s.split.join(' ') #=> "Hello, my name is Michael."
17
Koraktor

Essaye ça:

s = "Hello, my\n       name is Michael."
s.gsub(/\n\s+/, " ")
5
anusha

cette expression rationnelle remplacera l'instance de 1 ou plusieurs espaces blancs par 1 espace blanc, p.s \s remplacera tous les caractères d'espaces blancs comprenant \s\t\r\n\f:

a_string.gsub!(/\s+/, ' ')

De même pour le retour de chariot seulement

str.gsub!(/\n/, " ")

Commencez par remplacer tout \n par un espace, puis utilisez la suppression des regex à plusieurs espaces.

4
Ali
my_string = "Hello, my\n       name is Michael."
my_string = my_string.gsub( /\s+/, " " )
4
fl00r

Utilisez String # gsub :

s = "Hello, my\n       name is Michael."
s.gsub(/\s+/, " ")
3
Nikola
Use squish
currency = " XCD"
str = currency.squish
 str = "XCD" #=> "XCD"
1
vikas pal

Vous pouvez ajouter uniquement la méthode squish (et rien d’autre) à Ruby en n’incluant que cette facette Ruby:

https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/squish.rb

require 'facets/string/squish'

Puis utiliser

"my    \n   string".squish #=> "my string"

Ne nécessite pas de rails.

0
Convincible