2015-12-24 2 views
-2

У меня есть два строковых массивов (s1 и s2), которые загружаются из текстового файлавычитая строковые массивы в рубин

1.txt

a 
c 
e 

2.txt

b 
d 
e 

использованием

f = File.new(path, "r") #1.txt or 2.txt is passed in path 
while (l = f.gets) 
    res << l.chomp.downcase #just to be in the same case 
end 
f.close 

Я ожидаю, что s1 - s2 должен вернуть ["a", "c"] НО я ["b", "d", "e"]

Где я неправ?

+3

Привет и добро пожаловать в переполнение стека. Можете ли вы показать нам точный код, который вы используете для s1-s2? (это может быть небольшая опечатка или что-то в этом роде, но мы не можем сказать, если вы не покажете нам :) (и я спрашиваю, потому что я запустил этот код, и он отлично работает для меня) –

+0

Либо оба файла имеют одинаковый контент, либо вы помещаете содержимое 2.txt в s1 и s2. –

+0

Кажется вероятным, что ошибка указана в коде, который вы здесь не указали. –

ответ

1

Этот код работает для меня:

# this reads out all the lines into the array-variable 
# (no need for open/close/gets) 
s1 = File.readlines("1.txt") 
s2 = File.readlines("2.txt") 

# now you want to chomp and downcase each one 
# (the ! is important here or you lose the changes) 
s1.map!{|l| l.chomp.downcase } 
s2.map!{|l| l.chomp.downcase } 

# now you can do a diff 
s1 - s2 

приводит: ["a", "c"]

Но пожалуйста: все-таки показать нам код, который вы написали, так что мы можем понять, что ошибка была - иначе» я никогда не узнаю;)