1

假设我有一个这样的字符串:

May 12 -

我想要结束的是:

May 12

我尝试做 a gsub(/\s+\W/, '')and 来去除尾随空格和最后一个连字符。

但我不确定如何删除M.

想法?

4

3 回答 3

2

使用regexmatch代替gsub(即提取相关字符串,而不是尝试去除不相关的部分)/\w+(?:\W+\w+)*/

" May 12 - ".match(/\w+(?:\W+\w+)*/).to_s # => "May 12"

请注意,这比使用更有效gsub——将我的match正则表达式与建议的gsub则表达式进行对比,我得到了这些基准(500 万次重复):

                      user     system      total        real
match:           19.520000   0.060000  19.580000 ( 22.046307)
gsub:            31.830000   0.120000  31.950000 ( 35.781152)

按照建议添加gstrip!步骤不会显着改变这一点:

                      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-26T09:59:04.743 回答
1

使用.strip!关于你的结果。

" May 12".strip!  # => "May 12"
于 2012-05-26T06:58:14.957 回答
0

怎么样:

/^\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 delim
于 2012-05-26T10:16:43.683 回答