对Ruby长度属性感到困惑

时间:2013-02-28 01:02:14

标签: ruby string

为什么我的foo()函数将字符串“YAAR”打印为长度为5?

def foo() 
map = Hash.new
File.open('dictionary.txt').each_line{ |s|
    word = s.split(',')
    if word.any? { |b| b.include?('AA') }
        puts word.last
        puts word.last.length
    end
    }
end

someFile.txt

265651,YAAR
265654,YAARS

输出

YAAR
5
YAARS
6

2 个答案:

答案 0 :(得分:3)

你在两个字符串的末尾都有一个换行符'\ n'。所以,你的分裂正在接受:

"265651,YAAR\n"
"265654","YAARS\n"

答案 1 :(得分:3)

从文件中读取你会在所有行的末尾获得一个新行char(\ n)(除了最后一行)

而不是

word = s.split(',')
在循环中

,使用此

word = s.split(',').map { |s| s.chomp }