2009-08-28 9 views
19

Hej, Piszę mój pierwszy app Rails, a ja staram się zastąpić podkreślenia tworzą przychodzące nazwę tożsamości ze spacjami, tak:proste regex - replace podkreślenia spacją

przed : test_string

po: test ciąg

Jak mogę to zrobić? Przepraszam, jeśli jest to trochę głupie pytanie, nie jestem bardzo obeznany z wyrażeń regularnych ...

Odpowiedz

7

Ups, faktycznie miał to działa - po prostu zapomniał zaktualizować nazwę zmiennej: P

używałem to:

@id = params[:id] 
@title = @id.gsub("_", " ") 
31
str.gsub!(/_/, ' ') 

gsub oznacza „globalnej zastąpienia”, a wykrzyknik oznacza, zmieni się on sam ciąg raczej niż po prostu zwrócić podstawiony ciąg znaków.

Można też zrobić to bez regexes użyciu String#tr!:

str.tr!('_', ' ') 
+9

'str.tr! ('_', '')' Zwróci zero, jeśli 'str' nie zawiera żadnego' _' – draw

22

Na szynach można użyć prostownika .humanize i metody ruby ​​za pomocą .downcase, ale należy zachować ostrożność, ponieważ powoduje ona również usunięcie końcowego ciągu "_id" (W większości przypadków jest to właśnie to, czego potrzebujesz, nawet Skapitalizowana pierwszą literę)

'text_string_id'.humanize.downcase 
=> "text string" 
+1

Alternatywnie, ''text_string_id'.humanize (capitalize: false)' pozwoli ci aby pominąć transformację typu "downcase". – jmccartie

0

Korzystanie rozłamu i przyłączenia się do szyny

"test_string" .split ('_'). Join (”„)