Hatena::Grouprubyist

てーげーRuby

2008-07-06

練習問題 IOクラス

| 02:36

(1)あるファイルの内容を別のファイルにそのままコピーするメソッドcopyを定義してください。。

copyメソッドは2つの引数を取ります。

copy(コピー元ファイル名、コピー先ファイル名)


コピー元ファイル名のファイルの中身をコピー先ファイル名にコピーします。

def copy(src, dest)
  df = File.open(dest, "w")
  File.open(src, "r") do |f|
     while line = f.gets
        df.puts line
     end
  end
end

(2)Unixで使われるtailコマンドと似たことができるメソッドtailを定義してください。

tailメソッドは2つの引数を取ります。

tail(行数、ファイル名)

ファイルの最後の行から数えて指定された行数分だけ、そのファイルの中身を出力するものとしまます。つまり、ファイルsome_file.txtテキストを


def tail(linesize, src)
  File.open(src, "r") do |f|
    ary = f.to_a
    if ary.size > linesize
      ary[linesize*-1..-1].each do |line|
         puts line
       end
    else 
      ary.each do |line|
         puts line
       end
    end
  end
  return nil
end

練習問題 正規表現(Regexp)クラス

| 23:57

(1)電子メールのアドレスは「ローカルパート@ドメイン名」という形になっています。このような文字列から、ローカルパートを$1として、またドメイン名を$2として取得する正規表現を作ってください。

これじゃ端折りすぎですか・・

irb(main):027:0> "yaruo-yaranaio@hoge.jp" =~ /(.+?)@(.+)$/
=> 0
irb(main):028:0> $1
=> "yaruo-yaranaio"
irb(main):029:0> $2
=> "hoge.jp"


(2)「"オブジェクト指向は難しい!なんて難しいんだ!"」という文字列を、gsubメソッドを使って「"オブジェクト指向は簡単だ!なんて簡単なんだ!"」という文字列に直してください。

irb(main):033:0> puts "オブジェクト指向は難しい!なんて難しいんだ!".gsub(/難しいんだ/, "簡単なんだ").gsub(/難しい/,"簡単だ")
オブジェクト指向は簡単だ!なんて簡単なんだ!
=> nil


(3)アルファベットとハイフンからなる文字列を与えられると、ハイフンで区切られた部分をCapitalizeするようなメソッドword_capitalizeを定義してください。

p word_capitalize("in-reply-to") #=> "In-Replay-To"

p word_capitalize("X-MAILER") #=> "X-Mailer"

irb(main):040:0> def word_capitalize(str)
irb(main):041:1>    str.split('-').each do |e| e.capitalize! end.join('-')
irb(main):042:1> end
=> nil
irb(main):043:0> word_capitalize("in-reply-to")
=> "In-Reply-To"
irb(main):044:0> word_capitalize("X-MAILER")
=> "X-Mailer"

あれ正規表現つかってないや。

ゲスト



トラックバック - http://rubyist.g.hatena.ne.jp/tohtas/20080706