Tüm dize silgilerimle regex kullanımı gsub, daha kısa bir yol var mı? string.gsub(/\A.*\//,'')
Ruby'de Regex Sil var mı?
cevap
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.
+1, yine de hiç kimse bunu oylamadı şaşırıyorum. –
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 :)
@Vache haha, sağa. düzeltildi: P – Castilho
düşünüyorum. . .
string[/[^\/]*$/]
Bu üç karakter gerçekten size ulaşıyor? –
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? –
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