说我有这样的字符串:
May 12 -
我想要最终得到的是:
May 12
我尝试了gsub(/\s+\W/, '')
,它可以删除尾随空格和最后一个连字符。
但我不确定如何删除M
之前的第一个空格。
思想?
答案 0 :(得分:1)
使用.strip!你的结果。
" May 12".strip! # => "May 12"
答案 1 :(得分:1)
使用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)
答案 2 :(得分: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