Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Ruby中的用户输入与代码中已经存在的给定字符串不同?_Ruby_String_Comparison_User Input - Fatal编程技术网

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

为什么Ruby中的用户输入与代码中已经存在的给定字符串不同?,ruby,string,comparison,user-input,Ruby,String,Comparison,User Input,我的Ruby程序计算名为func1的函数中的字符串。它在运行时要求用户输入。字符串比较if语句 无论发生什么情况,都无法处理用户输入。我可以以交互方式输入字符串,该字符串应与程序定义的变量常量相同。但函数对这两个字符串的解释不同。我添加了额外的调试步骤来验证字符串是否正确。但我仍然不明白为什么func1看到的用户输入与我人类看到输入的方式不同。我希望func1接收用户输入的字符串foobar,并识别它。事实并非如此。我做错了什么 这是我的Ruby程序: def func1(x) if x

我的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


调用
获取
时,结束输入的换行符存储在变量中:

pry(main)> gets
qwe
# => "qwe\n"
要删除它,请使用。它会从字符串的末尾删除一个分隔符(默认为换行符):

pry(main)> a = gets
asd
#=> "asd\n"
pry(main)> a.chomp
#=> "asd"
就你而言:

def prompt(*args)
    print("Enter a string: ")
    coolstring = gets.chomp # <<<<<<<<<<<< here
    return coolstring
end
def提示符(*args)
打印(“输入字符串:”)
coolstring=gets.chomp#