Замена строки Ruby - программирование
Подтвердить что ты не робот

Замена строки Ruby

Не знаю, что называется этим термином (подстановка?), но в python, если вы введете

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

Вы получаете "Счастливые числа: 4 2"

Как это сделать в ruby?

Пытаясь выполнить описанный выше сценарий, он работает, если у меня есть одна переменная, но если мне нужно добавить sub в несколько переменных, скобки не являются допустимым синтаксисом.

4b9b3361

Ответ 1

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

Ответ 2

Вы можете использовать что-то, называемое String-интерполяция в Ruby, чтобы выполнить это.

Пример:

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

Здесь каждая переменная, которая находится внутри # {}, интерпретируется не как строка, а как имя переменной и значение заменяется.

Ответ 3

n1, n2 = 17, 42
puts "Lucky single number: %d" % n1
puts "Lucky multiple numbers: %d %d" % [ n1, n2 ]
puts "Lucky inline interpolation: #{n1} #{n2}"

Для документирования форматирования, разрешенного в String#%, прочитайте метод Kernel#sprintf.

Ответ 4

Вы также можете использовать хэш для замены строк. Это полезно, если у вас есть несколько экземпляров, которые необходимо заменить одной строкой.

p "%{foo} == %{foo}" % {:foo => "bar" }
# => "bar == bar"

Ответ 5

Он называется форматированием печати. ​​

Ознакомьтесь с другими примерами Рубированная форматированная печать

Вы пробовали что-нибудь вроде "%d"%10? Он оценивает значение "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 > 

Ответ 6

Методы Ruby, которые наиболее точно имитируют этот синтаксис в Python, это sprintf и format, которые являются псевдонимами друг для друга. Подробнее о них можно прочитать в Ruby Docs.

Вот пример:

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

Это приведет к выводу: "Lucky Numbers: 4 2"

Скобки, конечно, необязательны.