21

これを変更しようとしています:

"The basketball-player is great! (Kobe Bryant)"

これに:

"the basketball player is great kobe bryant"

小文字にしてすべての句読点を削除したいが、スペースを残したい...

試しstring.downcase.gsub(/[^a-z ]/, '')ましたが、スペースが削除されます

4

6 に答える 6

39

単に追加することができます\s(空白)

string.downcase.gsub(/[^a-z0-9\s]/i, '')

于 2012-04-09T12:46:34.270 に答える
16

ラテン文字以外の文字もキャッチしたい場合:

str = "The basketball-player is great! (Kobe Bryant) (ひらがな)"
str.downcase.gsub(/[^[:word:]\s]/, '')
#=> "the basketballplayer is great kobe bryant ひらがな"
于 2012-04-09T13:55:54.223 に答える
12

いくつかの優れた解決策がありますが、通常は最も単純なものが最適です。

string.downcase.gsub /\W+/, ' '
于 2012-04-09T13:18:49.527 に答える
6

他のすべての回答も同様に数字を取り除きます。それは与えられた例では機能しますが、非英数字を取り除く方法という質問には実際には答えません。

string.downcase.gsub(/[^\w\s]/, '')

これはアンダースコアを削除しないことに注意してください。それが必要な場合:

string.downcase.gsub(/[^a-zA-Z\s\d]/, '')
于 2014-04-07T22:03:27.200 に答える
1

a.downcase.gsub(/[^a-z ]/, "")

azの後に追加した空白に注意してください。また、すべての空白を置き換えたい場合(スペースだけでなく、gmaletteによって提案された\ sを使用します)。

于 2012-04-09T12:47:18.153 に答える