1

次のような文字列があるとします。

May 12 -

私が行きたいところは次のとおりです。

May 12

gsub(/\s+\W/, '')末尾のスペースと最後のハイフンを取り除くために機能する and を実行してみました。

しかし、 . の前の最初のスペースを削除する方法がわかりませんM

考え?

4

3 に答える 3

2

match正規表現を使用して代わりに使用gsubします(つまり、無関係な部分を取り除こうとする代わりに、関連する文字列を抽出します) /\w+(?:\W+\w+)*/

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

これは使用するよりもはるかに効率的であることに注意してくださいgsub– 私のmatch正規表現を提案されたgsubregexと比較すると、これらのベンチマークが得られます (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 に答える