2011-09-24 8 views
9

Mam ciąg, tak:Jak usunąć nawias z łańcucha w Ruby?

i chciałbym rozebrać nawias z łańcucha, aby uzyskać coś takiego:

"yellow-corn-corn-on-the-cob" 

wierzę byłoby użyć gsub do osiągnięcia tego , ale nie jestem pewien, jaki wzór będę musiał dopasować do nawiasu. Coś jak:

clean_string = old_string.gsub(PATTERN,"") 

Odpowiedz

21

Spróbuj tego:

clean_string = old_string.gsub(/[()]/, "") 

Na marginesie, Rubular jest niesamowite, aby szybko sprawdzić swoje wyrażeń regularnych.

+0

Nicea, byłem sceptyczny, ale potem spróbowałem i to działało. Ogólnie rzecz biorąc, czy '()' nie trzeba przechodzić w '[]'? –

+0

Zwykle jedynymi znakami, które nie są traktowane dosłownie w obrębie klas znakowych '[]' są:], \,^i -, a nawet wtedy karat i łącznik tylko w pozycji (jako pierwszy znak). – numbers1311407

+0

Zrobiłem szybki test, wygląda na to, że jedynymi, których musisz uciec (przynajmniej w wersji Ruby 1.9.2) są [,],/i \. –

27

Bez wyrażenia regularnego:

"yellow-corn-(corn-on-the-cob)".delete('()') #=> "yellow-corn-corn-on-the-cob" 
+0

bardzo czytelny i wygodnie, nie trzeba nawet wymykać nawiasów takich, że ''[foo]'. Delete ('[]')' zwraca po prostu ''foo'' :) –

+0

+++ To jest o wiele prostsze i bardziej trafna odpowiedź niż wybrana imo. –

Powiązane problemy