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*
  • …その後にリテラル開き括弧が続きます\(
  • …リテラルの閉じ括弧ではない 1 つ以上の文字が続く[^)]+
  • …その後にリテラルの閉じ括弧が続きます\)
  • …文字列の最後が続きます\z

そしてそれを何も置き換えません。

于 2013-06-20T03:55:08.360 に答える