2012-04-09 7 views

Odpowiedz

30

Możesz po prostu dodać(spacje)

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

+0

Skałasz! Elegancki i prosty. Dzięki :) –

+0

Uwaga: spowoduje to usunięcie numerów. – DrewB

+1

To sprawia, że ​​'gracz koszykówki' w' basketballplayer' –

1

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

Zanotować odstępy zostały dodane po-Z. Również jeśli chcesz zastąpić wszystkie białe spacje (nie tylko użycie przestrzeni kosmicznej zgodnie z propozycją gmalette).

+6

'a.downcase.delete ('^ a-z')' jest alternatywą. – steenslag

+0

Dzięki Ivaylo i @steenslag podobało mi się to i pomogło mi zachować przestrzeń. – Joe

8

Niektóre drobne rozwiązania, ale najprostszym jest zwykle najlepiej:

string.downcase.gsub /\W+/, ' ' 
11

Jeśli chcesz złapać znaki spoza alfabetu łacińskiego, zbyt:

str = "The basketball-player is great! (Kobe Bryant) (ひらがな)" 
str.downcase.gsub(/[^[:word:]\s]/, '') 
#=> "the basketballplayer is great kobe bryant ひらがな" 
4

Wszystkie inne odpowiedzi rozebrać się numery, jak również. Działa to na podany przykład, ale tak naprawdę nie odpowiada na pytanie, w jaki sposób usunąć niealfanumeryczny.

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