Trimming Whitespace from a String
Problem
You want to trim whitespace from a string.
Solution
Use JavaScript’s Regular Expression support to replace whitespace.
To trim leading and trailing whitespace, use the following:
" padded string ".replace /^\s+|\s+$/g, ""
# => 'padded string'To trim only leading whitespace, use the following:
" padded string ".replace /^\s+/g, ""
# => 'padded string 'To trim only trailing whitespace, use the following:
" padded string ".replace /\s+$/g, ""
# => ' padded string'Discussion
Opera, Firefox and Chrome all have a native string prototype trim method, and the other browsers could add one as well. For this particular method, I would use the built-in method where possible, otherwise create a polyfill:
unless String::trim then String::trim = -> @replace /^\s+|\s+$/g, ""
" padded string ".trim()
# => 'padded string'Syntax Sugar
You can add some Ruby-like syntax sugar with the following shortcuts:
String::strip = -> if String::trim? then @trim() else @replace /^\s+|\s+$/g, ""
String::lstrip = -> @replace /^\s+/g, ""
String::rstrip = -> @replace /\s+$/g, ""
" padded string ".strip()
# => 'padded string'
" padded string ".lstrip()
# => 'padded string '
" padded string ".rstrip()
# => ' padded string'For an interesting discussion and benchmarks of JavaScript trim performance, see this blog post by Steve Levithan.