Need help about Ruby with text file

O

Oscar Lok

Hi, everybody

This is my first time get into this forum.
I would like to know that is it a forum for us to discuss about
everythings in Ruby, please?
If so,
1)I would like to know that how can I delete or remove a line in a text
file, please?
2)How can I read some letter in a line, please?
e.g. a text file like this:-

aabbcc
ddeeff
gghhii
jjkkll

1)I want to delete ddeeff become like this:-
aabbcc
gghhii
jjkkll

2)I get the result like :-
hh

Thanks
Regards
Oscar
 
M

Mike Durham

Paul said:
--------------------------------------------------

#!/usr/bin/ruby

data=<<EOF
aabbcc
ddeeff
gghhii
jjkkll
EOF

puts "Before:",data

data.sub!(/ddeeff\n/,"")

puts "\nAfter:",data

--------------------------------------------------

Output:

Before:
aabbcc
ddeeff
gghhii
jjkkll

After:
aabbcc
gghhii
jjkkll



Please explain the circumstances under which you want to get this result.
He said the text is "in a file"
Cheers
 
O

Oscar Lok

Paul said:
Mike Durham wrote:

/ ...


I generally don't require newbies to create and then read a file for
demonstration purposes. I prefer my examples to run exactly as posted.
This
avoids the otherwise inevitable "I tried it and it didn't work!""
replies.

What this means is the OP needs to explain the circumstances under which
he
wants two "h" character in a row, clearly and unambiguously. Before,
after,
and in between.

And now, on re-reading his first post, I can't tell whether he got that
result and didn't want it, or didn't get it and wanted it. Or ... got it
and wanted it, and thought he would mention it in passing.

Hi,Paul Lutus
Thanks for your reply!

aabbcc
ddeeff
gghhii
jjkkll

2)I get the result like :-
hh

* What I would like to do is :-
1) go through each line from the begin
2) compare "hh" each letter on each line
3) found the line number of "gghhii"
4) extract "hh" of it.

Thanks!
Oscar
 
O

Oscar Lok

Example file contains:

aabbcc
ddeeff
gghhii
jjkkll

Output:

2: hh

Thanks a lots!
Ruby script really is a great script!
By the way, may I know that is there any function like e.g. left(line,
3), right(line, 2) and mid(line, 1, 4) to extract letter from a line,
please?
e.g.
mid(gghhii,3,2) return hh
left(gghhii,3) return ggh
right(gghhii,3) return hii

Thanks!
Oscar
 
H

Hugh Sasse

By the way, may I know that is there any function like e.g. left(line,
3), right(line, 2) and mid(line, 1, 4) to extract letter from a line,
please?
e.g.
mid(gghhii,3,2) return hh
left(gghhii,3) return ggh
right(gghhii,3) return hii

ri String#[] gives (for ruby-1.8.5):

-------------------------------------------------------------- String#[]
str[fixnum] => fixnum or nil
str[fixnum, fixnum] => new_str or nil
str[range] => new_str or nil
str[regexp] => new_str or nil
str[regexp, fixnum] => new_str or nil
str[other_str] => new_str or nil
str.slice(fixnum) => fixnum or nil
str.slice(fixnum, fixnum) => new_str or nil
str.slice(range) => new_str or nil
str.slice(regexp) => new_str or nil
str.slice(regexp, fixnum) => new_str or nil
str.slice(other_str) => new_str or nil
------------------------------------------------------------------------
Element Reference---If passed a single +Fixnum+, returns the code
of the character at that position. If passed two +Fixnum+ objects,
returns a substring starting at the offset given by the first, and
a length given by the second. If given a range, a substring
containing characters at offsets given by the range is returned. In
all three cases, if an offset is negative, it is counted from the
end of _str_. Returns +nil+ if the initial offset falls outside the
string, the length is negative, or the beginning of the range is
greater than the end.

If a +Regexp+ is supplied, the matching portion of _str_ is
returned. If a numeric parameter follows the regular expression,
that component of the +MatchData+ is returned instead. If a
+String+ is given, that string is returned if it occurs in _str_.
In both cases, +nil+ is returned if there is no match.

a = "hello there"
a[1] #=> 101
a[1,3] #=> "ell"
a[1..3] #=> "ell"
a[-3,2] #=> "er"
a[-4..-2] #=> "her"
a[12..-1] #=> nil
a[-2..-4] #=> ""
a[/[aeiou](.)\1/] #=> "ell"
a[/[aeiou](.)\1/, 0] #=> "ell"
a[/[aeiou](.)\1/, 1] #=> "l"
a[/[aeiou](.)\1/, 2] #=> nil
a["lo"] #=> "lo"
a["bye"] #=> nil

Take the time to explore ri, which you should have on your system.
It is very good.
Thanks!
Oscar
Hugh
 
O

Oscar Lok

Hai,
It is neat and simple(compare to others programing)! Very easy to
understand!

Thanks!

Regards
Oscar
 

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

Similar Threads


Members online

No members online now.

Forum statistics

Threads
474,212
Messages
2,571,101
Members
47,695
Latest member
KayleneBee

Latest Threads

Top