Hatena::Grouprubyist

krystal: プログラミング超初心者(文系)

2008-12-17 (Wed)たのしいRuby練習問題

P266 正規表現クラス

19:08

練習問題(1)

  • メルアドは「ローカルパート@ドメイン名」という形になってるから、ローカルパートを$1として、ドメイン名を$2として取得する正規表現を作る
str = "s.t.a.t.e_of_s.h.o.c.k123@hotmail.co.jp"
/(\w.*)@(\w.*)/ =~ str
local_part = $1
domain_name = $2
p local_part    #=>  "s.t.a.t.e_of_s.h.o.c.k123"
p domain_name   #=>  "hotmail.co.jp"

練習問題(2)

  • 「オブジェクト指向は難しい!なんて難しいんだ!」という文字列をgsubメソッドを使って「オブジェクト指向は簡単だ!なんて簡単なんだ!」という文字列に直す
str = "オブジェクト指向は難しい!なんて難しいんだ!"
p str.gsub(/難しい/, "簡単だ").gsub(/だん/, "なん")   #=>  "オブジェクト指向は簡単だ!なんて簡単なんだ!"

練習問題(3)

  • アルファベットとハイフンからなる文字列を与えれると、ハイフンで区切られた部分をCapitalizeするようなメソッドword_capitalizeを定義する
  • こんな感じで
p word_capitalize("in-reply-to")  #=> "In-Reply-To"
p word_capitalize("X-MAILER")  #=> "X-Mailer"
  • 私のコード
def word_capitalize(str)
  if /\w-*/ =~ str
    ary = Array.new
    str.split("-").each{|x|
      ary << x.capitalize
    }
    ary.join("-")
  end
end
p word_capitalize("out-of-the-box-to-the-sky")  #=> "Out-Of-The-Box-To-The-Sky"
p word_capitalize("GO-THE-DISTANCE")                 #=> "Go-The-Distance"

解答を見たらこれ練習になってないかもと思った。

  • CD-ROMによる(3)の解答はこの2つ:
def word_capitalize(str)
  return str.split(/\-/).collect{|w| w.capitalize}.join('-')
end

p word_capitalize("in-reply-to") #=> "In-Reply-To"
p word_capitalize("X-MAILER")    #=> "X-Mailer"
def word_capitalize(str)
  ret = ""
  str.scan(/(\w+)(\W*)/){|word, no_word|
    ret << word.capitalize + no_word
  }
  return ret
end

p word_capitalize("in-reply-to") #=> "In-Reply-To"
p word_capitalize("X-MAILER")    #=> "X-Mailer"

EmmlyEmmly2016/05/07 16:14here we love LOVE. The emotion, the actions, the rituals and detifinely the word. Whether written on a sign or splashed across a shoe (yes, please Mr. Louboutin) it’s one of the few times when kitsch

EssieEssie2016/05/09 10:37Oh, and Israel, we just criticise, but we never, ever <a href="http://ylolojtyov.com">âœonÂc€ndem”</a> Israel or, God Forbid, Zionism in principle.Anyone get the impression that Tex Tradd is a J Street Stooge?