首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从特定位置的字符串中去掉空格和特殊字符?

如何从特定位置的字符串中去掉空格和特殊字符?
EN

Stack Overflow用户
提问于 2012-05-26 14:52:15
回答 3查看 2.2K关注 0票数 1

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

May 12 -

我想要结束的地方是:

May 12

我试着做了一个gsub(/\s+\W/, ''),去掉了尾部的空格和最后一个连字符。

但我不确定如何删除M之前的第一个空格。

有什么想法?

EN

回答 3

Stack Overflow用户

发布于 2012-05-26 17:59:05

使用正则表达式match而不是gsub (即提取相关字符串,而不是尝试剥离不相关的部分),从而使用 /\w+(?:\W+\w+)*/

代码语言:javascript
复制
" May 12 - ".match(/\w+(?:\W+\w+)*/).to_s # => "May 12"

请注意,这比使用gsub的效率要高得多-让我的match正则表达式与the suggested gsub regex对抗,我得到了以下基准测试(重复500万次):

代码语言:javascript
复制
                      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不会显著改变这一点:

代码语言:javascript
复制
                      user     system      total        real
match:           19.390000   0.060000  19.450000 ( 20.537461)
gsub.strip!:     30.800000   0.110000  30.910000 ( 34.140044)
票数 2
EN

Stack Overflow用户

发布于 2012-05-26 14:58:15

使用.strip!根据你的结果。

代码语言:javascript
复制
" May 12".strip!  # => "May 12"
票数 1
EN

Stack Overflow用户

发布于 2012-05-26 18:16:44

这样如何:

代码语言:javascript
复制
/^\s+|\s+\W+$/

说明:

代码语言:javascript
复制
/         : 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10764250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档