2012-11-17 23 views
13

Bu ile başa çıkmanın doğru yolu nedir?Dize ile% dize arasındaki dize enterpolasyonu

"Hi %s, today is %s so you get 10% OFF!" % ['Joe', 'Monday'] 
# => ArgumentError: malformed format string - %O 

kullanamıyorum Normal %{keyname} veya #{code} Ben URL'ler için dizeleri ayrıştırma ve onları sıyırma yüzden farklı biçimlerde geri onları sopa olduğum için (ile/protokol, kısaltılmış, tam uzunlukta, vs olmadan) . Yani değiştiriliş sayısı bilinmiyor ve adları yok. Onlar sadece bir dizi url.

Ben de % kaçan çalıştı:

"Hi %s, today is %s so you get 10\% OFF!" % ['Joe', 'Monday'] 
# => ArgumentError: malformed format string - %O 

ama tam aynı sonucu elde.

cevap

27

İki% 'ın

>> "Hi %s, today is %s so you get 10%% OFF!" % ['Joe', 'Monday'] 
=> "Hi Joe, today is Monday so you get 10% OFF!" 
+1

Sean! Teşekkürler harika çalışıyor! Bu nerede belgelenmiştir? – eagspoo

+1

Dize sınıfındaki belgelerinde, tüm biçimlendirme seçenekleri için Kernel :: sprintf seçeneğine gelin. Sprintf uygulamalarında oldukça evrenseldir. –

+0

Kernel :: sprintf belgeleri: http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-sprintf –

1
"Hi %s, today is %s so you get 10%% OFF!" % ['Joe', 'Monday']