我正在创建一个Daffy Duck语音转换器(非常简单。直接来自CodeCademy),我遇到了显示来自用户的修改条目的问题。
代码:
puts "What would you like to convert to Daffy Duck language?"
user_input = gets.chomp
user_input.downcase!
if user_input.include? "s"
user_input.gsub!(/s/, "th")
print #{user_input}
else puts "I couldn't find any 's' in your entry. Please try again."
end
它会将您输入中的任何''改为'th',因此,听起来就像是一个大声朗读的Daffy Duck。当我将它输入解释器时,它不会显示修改后的字符串。它只会显示用户的原始条目。
编辑: 感谢下面的用户,代码是固定的,我向用户添加了转换文本的通知。谢谢你们!
答案 0 :(得分:2)
字符串外的#
开始comment,因此忽略#{user_input}
,即
print #{user_input}
相当于
print
您可能想知道为什么单个print
输出原始输入。这是因为没有参数print
将打印$_
。这是由global variable设置的gets
:
user_input = gets.chomp # assume we enter "foo"
user_input #=> "foo"
$_ #=> "foo\n"
如果传递字符串文字,一切都按预期工作:
print "#{user_input}"
或只是
print user_input
请注意,如果没有执行替换,gsub!
会返回nil
,因此您可以在if
语句中实际使用它:
if user_input.gsub!(/s/, "th")
print user_input
else
puts "I couldn't find any 's' in your entry. Please try again."
end
答案 1 :(得分:1)
你只需要在字符串插值周围添加双引号。否则你的代码只是返回输入。
puts "What would you like to convert to Daffy Duck language?"
user_input = gets.chomp
user_input.downcase!
if user_input.include? "s"
user_input.gsub!(/s/, "th")
print "#{user_input}"
else
puts "I couldn't find any 's' in your entry. Please try again."
end
答案 2 :(得分:1)
实际上,你甚至不需要插值。 print user_input
有效。请注意StackOverflow是如何语法突出显示您的代码作为注释。 :)