2010-06-17 16 views
10

, Tek istediğim bir dize, son n karakterden kurtulmak için ancak İsterdim Bir dizenin son n karakterlerini (Ruby'de) kaldırmanın en iyi yolu nedir? Ruby

"string".slice(0, -3) 
aşağıdaki

"string"[0,-3] 

ne de

çalışmıyor temiz bir yöntem, hiçbir şey önemsiz olabilir, lütfen herhangi bir şey değil bana öğret! Teşekkürler!

+5

+1. Seni dizenin sonuna bir balta aldığımı düşünür. :-) –

+1

'chop.chop.chop',' String''inizin fazladan üç kopyasını yapma dezavantajına sahiptir. Eğer sadece "merhaba, dünya" ise, o zaman önemli değil, ama eğer File.read ('/ some/really/big.file') 'ise, olacaktır. –

+0

Karşıdaki görev, son 'n' bayt/karakterleri/dizelerinizden herhangi birisini almak biraz zor: http://stackoverflow.com/questions/2174767/extracting-the-last-n-characters-from-a-ruby -pring –

cevap

19

Aralıkları kullanabilirsiniz.

"string"[0..-4] 
Sen gsub ile bir regex kullanabilirsiniz
+0

Beni buna yenettin! Bunu dilimle de yapabilirsiniz: "string" .slice (0 ..- 4) – sosborn

+3

[] ve dilim – Tao

+0

merhaba, teşekkürler! Ben sadece [] veya dilim ikinci parametresi üzerinde bir hata yaptım bulundu; Bitiş pozisyonundan ziyade uzunluk ... – Tao

1

Eğer !slice için bu yıkıcı başka değişkene atamayı gerek kalmadan son n karakterleri kaldırmak olacak bir eklerseniz:

new = my_string.slice(0..-4) 
: kıyasla
my_string.slice!(my_string.length-3,my_string.length) 

Chop.chop.chop` için

İlgili konular