これを変更しようとしています:
"The basketball-player is great! (Kobe Bryant)"
これに:
"the basketball player is great kobe bryant"
小文字にしてすべての句読点を削除したいが、スペースを残したい...
試しstring.downcase.gsub(/[^a-z ]/, '')
ましたが、スペースが削除されます
単に追加することができます\s
(空白)
string.downcase.gsub(/[^a-z0-9\s]/i, '')
ラテン文字以外の文字もキャッチしたい場合:
str = "The basketball-player is great! (Kobe Bryant) (ひらがな)"
str.downcase.gsub(/[^[:word:]\s]/, '')
#=> "the basketballplayer is great kobe bryant ひらがな"
いくつかの優れた解決策がありますが、通常は最も単純なものが最適です。
string.downcase.gsub /\W+/, ' '
他のすべての回答も同様に数字を取り除きます。それは与えられた例では機能しますが、非英数字を取り除く方法という質問には実際には答えません。
string.downcase.gsub(/[^\w\s]/, '')
これはアンダースコアを削除しないことに注意してください。それが必要な場合:
string.downcase.gsub(/[^a-zA-Z\s\d]/, '')
a.downcase.gsub(/[^a-z ]/, "")
azの後に追加した空白に注意してください。また、すべての空白を置き換えたい場合(スペースだけでなく、gmaletteによって提案された\ sを使用します)。