Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

óCoffeeScript Cookbook

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.

Is this recipe wrong, incomplete, or non idiomatic? Help fix it by reading the Contributor's Guide!