Trong Python, thành ngữ này để định dạng chuỗi là khá phổ biếnRuby tương đương với `s =" hello,% s của Python ở đâu là% s? " % ("John", "Mary") `
s = "hello, %s. Where is %s?" % ("John","Mary")
tương đương trong Ruby là gì?
Trong Python, thành ngữ này để định dạng chuỗi là khá phổ biếnRuby tương đương với `s =" hello,% s của Python ở đâu là% s? " % ("John", "Mary") `
s = "hello, %s. Where is %s?" % ("John","Mary")
tương đương trong Ruby là gì?
Cách đơn giản nhất là string interpolation. Bạn có thể tiêm các đoạn mã Ruby trực tiếp vào chuỗi của bạn.
name1 = "John"
name2 = "Mary"
"hello, #{name1}. Where is #{name2}?"
Bạn cũng có thể tạo chuỗi định dạng trong Ruby.
"hello, %s. Where is %s?" % ["John", "Mary"]
Hãy nhớ sử dụng dấu ngoặc vuông tại đó. Ruby không có tuple, chỉ mảng, và những người sử dụng dấu ngoặc vuông.
Tôi sẽ dứt khoát sử dụng cái đầu tiên, có vẻ dễ đọc hơn với tôi – David
Cái đầu tiên sẽ không hoạt động, # {} tìm biến, vì vậy trong trường hợp này nó sẽ in biến John chứ không phải chuỗi " John". Cách thứ hai có vẻ chính xác. –
Điểm tốt Jason, tôi sẽ chỉnh sửa nó để làm cho nó rõ ràng hơn. – AboutRuby
Hầu như cùng một cách:
irb(main):003:0> "hello, %s. Where is %s?" % ["John","Mary"]
=> "hello, John. Where is Mary?"
Trong Ruby, các dấu ngoặc vuông có nghĩa là một tuple không? Tôi nghĩ rằng dấu ngoặc vuông là danh sách ... – TIMEX
@TIMEX: Câu hỏi này sẽ giúp: http://stackoverflow.com/questions/525957/tuples-in-ruby –
Ruby không có bộ dữ liệu (ít nhất là không được giả mạo trong ngôn ngữ). Vâng, đó là một mảng ("danh sách" trong Python thực sự nên được gọi là mảng ...). – delnan
Trên thực tế gần như giống nhau
s = "hello, %s. Where is %s?" % ["John","Mary"]
Trong Ruby 1.9 bạn có thể làm điều này:
s = "hello, %{name1}. Where is %{name2} ?" % { :name1 => 'John', :name2 => 'Mary' }
Edit: thêm mất tích ':' s
tham khảo: http://ruby-doc.org/core-1.9.3/String.html
: name1 : name2 Không? – masnun
Tôi đã chỉnh sửa trong * Idomatic Ruby * tương đương ở đó - nhưng bây giờ tôi nhận thấy câu trả lời được chấp nhận đã làm điều đó - gỡ bỏ 'chỉnh sửa' lần nữa: -/ – toong
Khi sử dụng băm với toán tử chuỗi%, nếu biểu tượng khóa được tham chiếu trong chuỗi định dạng không có, bạn sẽ nhận được một KeyError. – user1164178
Không có nối chuỗi, chỉ có chuỗi định dạng. Và google sẽ trả lời điều này nhanh hơn thậm chí SO bao giờ có thể ... nó đã cho tôi khoảng 20 giây để tìm ra bạn có thể làm chính xác như vậy trong Ruby. – delnan
Bạn không yêu cầu ghép nối, yêu cầu định dạng/thay thế của bạn. Bạn nên thay đổi câu hỏi của mình. Bằng cách này, trong ruby, nối được thực hiện với + hoặc << toán tử. – David