在Ruby中比较字符串与文件中的字符串
My data.txt中也填充了“hello”,因此if循环应该处于活动状态,但它没有。我做错了什么?从文件中读取数据时,很可能会在数据的末尾标记一条换行符 例如,如果我在终端中运行以下命令以创建仅包含单词“hello”的文件:在Ruby中比较字符串与文件中的字符串,ruby,Ruby,My data.txt中也填充了“hello”,因此if循环应该处于活动状态,但它没有。我做错了什么?从文件中读取数据时,很可能会在数据的末尾标记一条换行符 例如,如果我在终端中运行以下命令以创建仅包含单词“hello”的文件: data = File.read("data.txt") if(data.to_s.eql? "hello") ... end 在终端上读到这个,我明白了: echo hello > data.txt 然而,跳入irb,我得到以下信息: cat da
data = File.read("data.txt")
if(data.to_s.eql? "hello")
...
end
在终端上读到这个,我明白了:
echo hello > data.txt
然而,跳入irb
,我得到以下信息:
cat data.txt
# => hello
\n
是换行符
要解决您的问题,您可以使用:
File.read("data.txt")
# => "hello\n"
从字符串的末尾删除任何记录分隔符,以便进行比较
如果您只想知道文件是否包含指定的字符串,还可以使用:
if data.chomp == "hello"
...
end
这将返回方括号中的真实值(如果存在),或nil
如果不存在
data['hello']
文件中的数据可能包含尾随的换行符。执行
p data
,您将看到。另外,在样式方面,您的括号是。。。不寻常。要么做如果data.to_.eql?(“你好”)
(我会做的)要么根本没有括号(这里不需要括号)@SergioTulentsev如果你做字符串35; to#u.eql?
@穆达索布瓦:你知道我的意思。:)评论只涉及括号。修复其他问题超出范围。data.chomp.eql?“你好”#=>true
顺便说一句,触摸文件是不必要的。至少在我的机器上是这样。@SergioTulentsev,在任何地方都不需要(Ubuntu、Windows等)
if data["hello"]
...
end