假设我有一个这样的字符串:
May 12 -
我想要结束的地方是:
May 12
我试着做了一个gsub(/\s+\W/, ''),去掉了尾部的空格和最后一个连字符。
但我不确定如何删除M之前的第一个空格。
有什么想法?
发布于 2012-05-26 17:59:05
使用正则表达式match而不是gsub (即提取相关字符串,而不是尝试剥离不相关的部分),从而使用 /\w+(?:\W+\w+)*/
" May 12 - ".match(/\w+(?:\W+\w+)*/).to_s # => "May 12"请注意,这比使用gsub的效率要高得多-让我的match正则表达式与the suggested gsub regex对抗,我得到了以下基准测试(重复500万次):
user system total real
match: 19.520000 0.060000 19.580000 ( 22.046307)
gsub: 31.830000 0.120000 31.950000 ( 35.781152)添加gstrip!步骤as suggested不会显著改变这一点:
user system total real
match: 19.390000 0.060000 19.450000 ( 20.537461)
gsub.strip!: 30.800000 0.110000 30.910000 ( 34.140044)发布于 2012-05-26 14:58:15
使用.strip!根据你的结果。
" May 12".strip! # => "May 12"发布于 2012-05-26 18:16:44
这样如何:
/^\s+|\s+\W+$/说明:
/ : regex delim
^ : begining of string
\s+ : 1 or more spaces
| : OR
\s+\W+ : 1 or more spaces followed by 1 or more non word char
$ : end of string
/ : regex delimhttps://stackoverflow.com/questions/10764250
复制相似问题