Ruby检查文件中是否存在变量

时间:2015-07-22 18:02:17

标签: ruby

我有一个每行一个单词的文本文件。

我想检查该文件中的任何行上是否存在Ruby变量。

@username = John

和bannedwords.txt:

Alex
Adam
Mary
John
James

所以这是真的。在Ruby中使用的最佳功能是什么?

4 个答案:

答案 0 :(得分:2)

File.readlines("bannedwords.txt")会在文本文件中返回一个名称数组。

.collect(&:chomp)会从数组元素中删除换行符。

.include?(@username)会检查数组中是否有@username

把所有这些放在一起:

File.readlines("bannedwords.txt").collect(&:chomp).include?(@username)

答案 1 :(得分:1)

只需读入该文件并将其转换为Set即可用于测试包含:

require 'set'
banned = Set.new(File.readlines('bannedwords.txt').collect(&:chomp))

banned.include?('John')
# => true

banned.include?('Papa Smurf')
# => false

答案 2 :(得分:1)

您可以使用

File.read("path/to/bannedwords.txt").include?(@username).

答案 3 :(得分:0)

基本结构

您正在做的是检查某个值是否在数组中。暂时忽略加载文件,这个检查很简单:

bannedUsernames.include? username

数据

至于实际加载文件,你想打开文件,遍历这些行,并将每一行添加到数组中:

banned_usernames = [] # Empty array

# Open the file and assign it to the handle f
f = File.open("banned_usernames.txt")

# If this line doesn't make sense then read up on ruby blocks
f.each_line { |line| banned_usernames.push line }

然后只需使用上面的行来执行if声明:

if banned_usernames.include? username