2012-03-31 23 views
11

Tüm dize silgilerimle regex kullanımı gsub, daha kısa bir yol var mı? string.gsub(/\A.*\//,'')Ruby'de Regex Sil var mı?

+3

Bu üç karakter gerçekten size ulaşıyor? –

+0

lol, bir çok dize silme işlemi yapıyor gibi görünüyor. Ama gsub ile yapıyor, yanlış yapıyorum gibi görünüyor. String.delete ile yapılmalı, değil mi? –

+0

string.delete yalnızca hangi karakterlerin silineceğini, regexp içermez. string.slice! regexp tabanlı bir dizgenin bir kısmını kaldırmak için kullanılabilir ancak daha uzun bir süre sonra gsub ... – Pafjo

cevap

5

bir yolu kendi kısa yöntemleri eklemektir:

class String 

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

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

end 

Tipik örnek lib/dizesi-extensions.rb için, bir lib/dizininde

Başkanlarını kadar gider bu kod Bazı programcılar bunu gerçekten sevmiyorlar çünkü o maymun-yamalı. Projeyi kişisel olarak beğenirim çünkü kodun anlaşılmasını kolaylaştırır - "del" yöntemine sahip olduğumda, bu çağrıların sadece regexp'i sildiğini görebiliyorum.

+0

+1, yine de hiç kimse bunu oylamadı şaşırıyorum. –

3

Sanırım öyle değil.

Dize :: silme, karakterleri siler ve normal ifadeyle eşleşmiyor, tamamen farklı bir yaklaşım.

Sizinkileri "daha kısa" hale getirmeyi düşünebilmemin tek yolu string.gsub!(/\A.*\//,'')'u kullanmaktır. gitmek için yol

, ben yerine tutmak size istediğiniz dizesinin bölümünü belirtebilirsiniz :)

+0

@Vache haha, sağa. düzeltildi: P – Castilho