Managing Whitespace
Problem
Your string contains too much whitespace, not enough whitespace, or the wrong kind of whitespace.
Solution
Use strip to remove whitespace from the beginning and end of a string:
" Whitespace at beginning and end. ". strip
Add whitespace to one or both ends of a string with ljust, rjust, and center:
s = "Some text." s. center(15) s. ljust(15) s. rjust(15)
Use the gsub method with a string or regular expression to make more complex changes, such as to replace one type of whitespace with another.
#Normalize Ruby source code by replacing tabs with spaces rubyCode.gsub(" ", " ") #Transform Windows-style newlines to Unix-style newlines "Line one Line two ".gsub( ", " ") # => "Line one Line two " #Transform all runs of whitespace into a single space character " This string uses all sorts of whitespace.".gsub(/s+/," ") # => " This string uses all sorts of whitespace."
Discussion
What counts as whitespace? Any of these five characters: space, tab ( ), newline ( ), linefeed ( ), and form feed (f). The regular expression /s/ matches any one character from that set. The strip method strips any combination of those characters from the beginning or end of a string.
In rare cases you may need to handle oddball "space" characters like backspace ( or 10) and vertical tab (v or 12). These are not part of the s character group in a regular expression, so use a custom character group to catch these characters.
" It's whitespace, Jim,vbut not as we know it. ".gsub(/[sv]+/, " ") # => "It's whitespace, Jim, but not as we know it."
To remove whitespace from only one end of a string, use the lstrip or rstrip method:
s = " Whitespace madness! " s.lstrip # => "Whitespace madness! " s.rstrip # => " Whitespace madness!"
The methods for adding whitespace to a string (center, ljust, and rjust) take a single argument: the total length of the string they should return, counting the original string and any added whitespace. If center can't center a string perfectly, it'll put one extra space on the right:
"four".center(5) # => "four " "four".center(6) # => " four "
Like most string-modifying methods, strip, gsub, lstrip, and rstrip have counterparts strip!, gsub!, lstrip!, and rstrip!, which modify the string in place.