为什么 Ruby 中的用户输入与代码中已有的给定字符串不同?



我的Ruby程序在一个名为func1的函数中计算字符串。 它在运行时要求用户输入。 语句if字符串比较 无论如何都不适用于用户输入。 我可以交互式地输入应与程序定义的变量常量相同的字符串。但该函数以不同的方式解释这两个字符串。我添加了额外的调试步骤来验证字符串是否正确。但我仍然不明白为什么func1看到的用户输入与我(人类(看到输入的方式不同。 我希望 func1 接收用户输入的字符串foobar并识别它。这不是正在发生的事情。我做错了什么?

这是我的Ruby程序:

def func1(x)
if x == 'foobar' then
print "you gave this function foobar"
puts " "
else
print "you did NOT give this function foobar"
end
end
def prompt(*args)
print("Enter a string: ")
coolstring = gets
return coolstring
end
func1("foobar")
y = prompt
print(y)
func1(y)

以下是一些输出,显示我输入了字符串"foobar":

你给了这个函数 foobar

输入字符串:foobar

福巴

你没有给这个函数 foobar

当您调用gets时,结束输入的换行符存储在变量中:

pry(main)> gets
qwe
# => "qwen"

要删除它,请使用String#chomp。它从字符串末尾删除分隔符(默认情况下为换行符(:

pry(main)> a = gets
asd
#=> "asdn"
pry(main)> a.chomp
#=> "asd"

在您的情况下:

def prompt(*args)
print("Enter a string: ")
coolstring = gets.chomp # <<<<<<<<<<<< here
return coolstring
end

相关内容

  • 没有找到相关文章

最新更新