我有一个每行一个单词的文本文件。
我想检查该文件中的任何行上是否存在Ruby变量。
@username = John
和bannedwords.txt:
Alex
Adam
Mary
John
James
所以这是真的。在Ruby中使用的最佳功能是什么?
答案 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