óCoffeeScript Cookbook

去掉字符串首尾的空白

问题

你想去掉字符串首尾的空白

方法

使用JavaScript的正则表达式来替换空白。

使用下面的方式去掉首尾的空白字符:

"  padded string  ".replace /^\s+|\s+$/g, ""
# => 'padded string'

如下方式,仅仅去掉首部的空白符:

"  padded string  ".replace /^\s+/g, ""
# => 'padded string  '

去掉末尾的空白字符:

"  padded string  ".replace /\s+$/g, ""
# => '  padded string'

详解

Opera,Firefox和Chrome都有一个原生的字符串原型方法trim,而且也可以为其他浏览器其添加同样的方法。对于这类方法,如果存在的话我就使用内置的,否则就自己补充一个:

unless String::trim then String::trim = -> @replace /^\s+|\s+$/g, ""

"  padded string  ".trim()
# => 'padded string'

语法糖

你可以使用下面这种快捷方法添加一些类似于Ruby的语法糖:

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'

关于trim性能的讨论和数据,参看Steve Levithan的这篇博客