2012-04-27 31 views
16

Không biết những gì thuật ngữ được gọi, nhưng trong python nếu bạn gõcủa Ruby chuỗi thay

num1 = 4 
num2 = 2 
print("Lucky numbers: %d %d" %(num1, num2)) 

Bạn nhận được "số may mắn: 4 2" (thay thế?)

Làm thế nào để làm điều này trong ruby?

Cố gắng thực hiện kịch bản trên, nó hoạt động nếu tôi có một biến, nhưng nếu tôi cần phụ trong nhiều biến thì dấu ngoặc đơn không phải là cú pháp hợp lệ.

Trả lời

23
num1 = 4 
num2 = 2 
print "Lucky numbers: %d %d" % [num1, num2] 
26

Bạn có thể sử dụng thứ được gọi là String interpolation trong Ruby để thực hiện việc này.

ví dụ:

num1 = 4 
num2 = 2 
puts "Lucky numbers: #{num1} #{num2}"; 

Ở đây mỗi biến đó là bên trong # {} được hiểu không phải là một chuỗi nhưng như một tên biến và giá trị được thay thế.

+0

Lưu ý rằng điều này giải quyết các nhu cầu cụ thể đối với số nguyên, và nói chung là một Ruby ngữ tốt, nhưng không cho phép sprintf định dạng như ' "% .3f"' – Phrogz

+1

@Phrogz đúng, nhưng câu hỏi là về thay thế, không định dạng. –

+1

Có lẽ những gì tôi đang tìm kiếm là định dạng. Tôi chỉ muốn có thể tạo các chuỗi như vậy và sau đó chuyển chúng sang các phương thức khác – MxyL

1

Nó được gọi là định dạng in.

Thanh toán nhiều ví dụ Ruby Formatted Printing

Các bạn đã thử bất cứ điều gì như "%d"%10? Nó đánh giá để "10"

1.9.3-p0 :003 > "%02x"%(10) 
=> "0a" 
1.9.3-p0 :004 > 

1.9.3-p0 :005 > print "Nicely formatted string with an int: %d" % 10 
Nicely formatted string with an int: 10 => nil 
1.9.3-p0 :006 > 
5
n1, n2 = 17, 42 
puts "Lucky single number: %d" % n1 
puts "Lucky multiple numbers: %d %d" % [ n1, n2 ] 
puts "Lucky inline interpolation: #{n1} #{n2}" 

Đối với tài liệu của các định dạng cho phép trong String#% phương pháp đọc lên trên Kernel#sprintf.

1

Phương pháp Ruby bắt chước gần nhất cú pháp trong Python là sprintfformat, là bí danh cho nhau. Bạn có thể đọc sâu về chúng trong Ruby Docs.

Dưới đây là một ví dụ:

num1 = 4 
num2 = 2 
sprintf("Lucky numbers: %d %d", num1, num2) 

sẽ này ra: "Số Lucky: 4 2"

ngoặc là tất nhiên không bắt buộc.

3

Bạn cũng có thể sử dụng hàm băm để thay thế chuỗi. Điều này rất hữu ích nếu bạn có nhiều trường hợp cần được thay thế bằng cùng một chuỗi.

p "%{foo} == %{foo}" % {:foo => "bar" } 
# => "bar == bar" 
Các vấn đề liên quan