2012-03-31 14 views
11

Całe moje usuwanie ciągów za pomocą wyrażenia regularnego używa gsub, czy jest krótsza droga? string.gsub(/\A.*\//,'')Czy istnieje Regex Delete w Ruby?

+3

Tych trzech postaci naprawdę do ciebie dociera? –

+0

lol wydaje się robić dużo kasowań. Ale robiąc to za pomocą gsub, wydaje mi się, że robię to źle. Powinno to zostać wykonane przez string.delete, nie? –

+0

string.delete przyjmuje tylko znaki do usunięcia, bez wyrażeń regularnych. string.slice! może być użyty do usunięcia części ciągu znaków na podstawie wyrażeń regularnych, ale jest dłuższy niż gsub ... – Pafjo

Odpowiedz

5

Jednym ze sposobów jest dodawanie własnych krótkich metod:

class String 

    def del(regexp) 
    gsub(regexp,'') 
    end 

    def del!(regexp) 
    gsub!(regexp,'') 
    end 

end 

Zazwyczaj ten kod pójdzie w katalogu lib /, na przykład lib/String-extensions.rb

heads-up że niektórzy programiści naprawdę tego nie lubią, ponieważ to łatanie małp. Osobiście lubię to w projektach, ponieważ ułatwia to zrozumienie kodu - gdy już mam metodę "del", mogę szybko zobaczyć, że wywołania do niej po prostu usuwają wyrażenie regularne.

+0

+1, choć jestem zaskoczony, że nikt tego nie głosował. –

3

Nie sądzę.

Ciąg :: delete usuwa znaki i nie pasuje do wyrażenia regularnego, to zupełnie inne podejście.

Jedyny sposób, w jaki mogę wymyślić, że twoja linia jest "krótsza", to użycie string.gsub!(/\A.*\//,'') (zauważ tam huk).

To droga, myślę :)

+0

@Vache haha, racja. poprawił go: P – Castilho

5

Można zamiast określać część napisu chcesz zachować. . .

string[/[^\/]*$/] 
Powiązane problemy