1

我已经阅读了 [this][1] 和 [this][2],但他们并没有完全回答我的问题。

假设我有以下产品名称和代码:

Cool Product 9000 (CP9000)

我想去掉最后一个空格和它之后的所有内容:

Cool Product 9000

我将如何做到这一点?

如果您知道可以解释这一点的指南或教程,请随时向我指出。

编辑:如果我最初的问题有点不清楚,我深表歉意。我很欣赏所有的答案,我会在将其中一个标记为答案之前对它们进行测试,看看我最喜欢哪个。

4

4 回答 4

5

这应该这样做:

string.sub!(/\s+\S*$/, '')

但是,为了括号内的好处,您也可以这样做:

string.sub!(/\s+\(.*?$/, '')

它将捕获(而不是捕获)@Phrogz 下面给出的示例:

foo bar baz

不会被改变和

foo bar (bar baz)

会变成

foo bar
于 2013-06-20T03:53:50.170 回答
3
s = 'Cool Product 9000 (CP9000)'
s[0...s.rindex(" ")]
# => "Cool Product 9000"
于 2013-06-20T04:15:10.657 回答
2

与 OMG 的方法相同,但s会自行修改:

s = 'Cool Product 9000 (CP9000)'
s[s.rindex(' ')..-1] = ''

s
# => "Cool Product 9000"
于 2013-06-20T12:24:54.907 回答
1
stripped = string.sub /\s*\([^)]+\)\z/, ''

说的是:

  • 查找一些可选的空格\s*
  • …后跟一个字面的左括号\(
  • …后跟一个或多个不是文字右括号的字符[^)]+
  • …后跟一个字面的右括号\)
  • …接着是字符串的结尾\z

并用任何东西代替它。

于 2013-06-20T03:55:08.360 回答