data = File.read("data.txt")
if(data.to_s.eql? "hello")
...
end
我的data.txt也用“ hello”填充,因此if循环应该处于活动状态,但不会激活。我该怎么办?
答案 0 :(得分:1)
从文件中读取数据时,很可能在数据末尾添加了换行符。
例如,如果我在终端中运行以下命令以创建仅包含单词“ hello”的文件:
echo hello > data.txt
然后在终端中阅读此内容,我明白了:
cat data.txt
# => hello
但是,跳到irb
,我得到以下信息:
File.read("data.txt")
# => "hello\n"
\n
是换行符。
要解决您的问题,可以使用:
if data.chomp == "hello"
...
end
chomp
从字符串的末尾删除任何记录分隔符,为您进行比较。
如果只想知道文件是否包含指定的字符串,也可以使用:
data['hello']
这将在方括号中返回真实值,如果没有则返回nil
。
if data["hello"]
...
end