Search File Contents

A

Andy Dbest

Hi Guys,

I have a small code block that is frustrating me for some time now. I
want to search for some text in a file. Simple isnt it?

def read_file week_num
week_num = week_num.to_s
f = File.open("fixtures.txt", "r")
lines = f.readlines
#week_num = '1.'
lines.each do|line|
if line.chomp.eql? week_num
puts "Found the week number"
end
end
f.close
end

The above is the method, and I am searching for "1.". I am passing the
variable "week_num" and i even tried to convert it to string. The search
code as it is right now, does not output "Found the week number", even
though the file contains "1."

If i uncomment the line that assigns week_num to '1.' directly, then it
works. What am i doing wrong?
 
S

Stefano Crocco

Hi Guys,

I have a small code block that is frustrating me for some time now. I
want to search for some text in a file. Simple isnt it?

def read_file week_num
week_num = week_num.to_s
f = File.open("fixtures.txt", "r")
lines = f.readlines
#week_num = '1.'
lines.each do|line|
if line.chomp.eql? week_num
puts "Found the week number"
end
end
f.close
end

The above is the method, and I am searching for "1.". I am passing the
variable "week_num" and i even tried to convert it to string. The search
code as it is right now, does not output "Found the week number", even
though the file contains "1."

If i uncomment the line that assigns week_num to '1.' directly, then it
works. What am i doing wrong?

If assiging week_num a value inside the method makes the code work, I'd say
the problem is in the argument which is passed to the method. Have you tried
to put a

puts week_num

at the beginning of the method, to see whether the argument you get is the one
you expect?

Stefano
 
A

Andy Dbest

Stefano said:
On Sunday 08 June 2008, Andy Dbest wrote:
If assiging week_num a value inside the method makes the code work, I'd
say
the problem is in the argument which is passed to the method. Have you
tried
to put a

puts week_num

at the beginning of the method, to see whether the argument you get is
the one
you expect?

Stefano

I tried the puts line, just inside the method and it does return '1.'
for me. It kind of annoying...
 
S

Stefano Crocco

I tried the puts line, just inside the method and it does return '1.'
for me. It kind of annoying...

Can you post a sample of the file you're searching in? This way, I can try
your code myself and see what's going on.

Stefano
 
A

Andy Dbest

Stefano said:
Can you post a sample of the file you're searching in? This way, I can
try
your code myself and see what's going on.

Stefano

sure...

here is an extract of the file

1.

aaa.txt - bbb.txt
aac.txt - bbc.tct

2.

aac.txt - bbb.txt
aaa.txt - bbc.txt
 
S

Stefano Crocco

sure...

here is an extract of the file

1.

aaa.txt - bbb.txt
aac.txt - bbc.tct

2.

aac.txt - bbb.txt
aaa.txt - bbc.txt

I've tried it and it works even without the assignment. Are you sure there
isn't any trailing space afer 1. in the method argument? Using puts as I
suggested in my first post wouldn't have shown that. You can try examining the
argument with p, instead of puts, which displays the string with special
characters escaped and surrounded by quotes. If everything is correct, the
line

p week_num

should output

"1."

If there are trailing spaces, you'll see something like

"1. "

Stefano
 
A

Andy Dbest

I've tried it and it works even without the assignment. Are you sure
there
isn't any trailing space afer 1. in the method argument? Using puts as I
suggested in my first post wouldn't have shown that. You can try
examining the
argument with p, instead of puts, which displays the string with special
characters escaped and surrounded by quotes. If everything is correct,
the
line

p week_num

should output

"1."

If there are trailing spaces, you'll see something like

"1. "

Stefano

Thanks Stefano,

the p week_num line did the trick, i noticed that there was a leading
space. I was taking the input from an FXRuby text control, in which i
introduced a space.

Have fixed it now.

Cheers and thanks.
Andy
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,969
Messages
2,570,161
Members
46,709
Latest member
AustinMudi

Latest Threads

Top