将字符串与Ruby中文件中的字符串进行比较

时间:2018-07-24 11:54:27

标签: ruby

data = File.read("data.txt")
if(data.to_s.eql? "hello")
  ...   
end

我的data.txt也用“ hello”填充,因此if循环应该处于活动状态,但不会激活。我该怎么办?

1 个答案:

答案 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