How to strip inner whitespace in rails

I want to strip any whitespace that more than 1 to be 1

For example “A B C” ===> “A B C”

        "Very    Important" ===> "Very Important"

On Mon, Jul 20, 2009 at 10:47 AM, Thriving
K.[email protected] wrote:

I want to strip any whitespace that more than 1 to be 1

For example “A B C” ===> “A B C”

       "Very    Important" ===> "Very Important"

try #squeeze

botp wrote:

On Mon, Jul 20, 2009 at 10:47 AM, Thriving
K.[email protected] wrote:

I want to strip any whitespace that more than 1 to be 1

For example “A � �B � �C” ===> “A B C”

� � � � � �"Very � �Important" ===> “Very Important”

try #squeeze

Thank you

Thriving K. wrote:

I want to strip any whitespace that more than 1 to be 1

For example “A B C” ===> “A B C”

        "Very    Important" ===> "Very Important"

split() rules the world. squeez()…not so much.

s.split().join(" ")

7stud – wrote:

split() rules the world. squeeze()…not so much.

…but if you are a regex addict, then gsub() is your fix:

result = s.gsub(/\s+/) do |match|
" "
end

On Mon, Jul 20, 2009 at 5:15 AM, 7stud –[email protected] wrote:

split() rules the world. Â squeez()…not so much.

Why? String#squeeze performs precisely what the OP asks for. There’s
nothing as concise as that.

If what needs to be collapsed is whitespace in the \s sense, then I
would perhaps swtich to gsub:

str.gsub(/\s+/, ’ ')

Hi –

On Mon, 20 Jul 2009, 7stud – wrote:

Thriving K. wrote:

I want to strip any whitespace that more than 1 to be 1

For example “A B C” ===> “A B C”

        "Very    Important" ===> "Very Important"

split() rules the world. squeez()…not so much.

s.split().join(" ")

They’re completely different methods, though. They’re not in a death
struggle :slight_smile: They do different things. I wouldn’t want to try this
with split:

“abc deffff ghi”.squeeze(" f") => “abc def ghi”

squeeze is a better fit, it terms of its stated purpose, than split,
if you want to condense multiple occurrences into one. It’s also
faster, in every benchmark I can come up with:

    user     system      total        real
2.630000   0.010000   2.640000 (  2.665775)
0.140000   0.000000   0.140000 (  0.136925)

(That’s for removing extra " "s from a string of length about 500.)

David

Hi –

On Mon, 20 Jul 2009, Xavier N. wrote:

str.gsub(/\s+/, ’ ')
I agree, unless speed is an issue, in which case you might be better
off with:

str.squeeze(" \t\n\r\f")

although it’s a bit more heavy-handed and I’m probably forgetting one.

David

Thriving K. wrote:

I want to strip any whitespace that more than 1 to be 1

For example “A B C” ===> “A B C”

        "Very    Important" ===> "Very Important"

In Rails (and nobody mentioned it), use String#squish or String#squish!

On Mon, Jul 20, 2009 at 1:23 PM, David A. Black[email protected]
wrote:

I agree, unless speed is an issue, in which case you might be better
off with:

 str.squeeze(" \t\n\r\f")

although it’s a bit more heavy-handed and I’m probably forgetting one.

Agreed, I would default to gsub here because I find \s more obvious
than the character set, but if speed is an issue I’d go with sqeeze as
well.

Hi –

On Tue, 21 Jul 2009, Andrew K. wrote:

Thriving K. wrote:

I want to strip any whitespace that more than 1 to be 1

For example “A B C” ===> “A B C”

        "Very    Important" ===> "Very Important"

In Rails (and nobody mentioned it), use String#squish or String#squish!

The question was about removing inner whitespace, though. The only
thing squish does that squeeze or gsub don’t do is remove outer
whitespace.

David