lispとrubyとpythonと その2(ruby)

次はruby
lispをやったあとだと、全てがクラスラライブラリに入っているrubyが書いたり調べたりするのが楽。

#! /usr/bin/ruby -Ku

#参考
#http://www.namaraii.com/rubytips/

#文字列連結
puts  s = "abc" + "あいうえお"

#文字列の分解
"あaあ,いiい,うuう,えeえ".split(",").each{|e| puts e.upcase}

#文字列のフォーマット
#rubyにもあった。
puts "aaa %s bbb %s" % ["",""]

#文字列検索
puts "あいうえおかきくけこさしすせそ".index "かきくけこ"

#部分文字列の取得
s = "あいうえおabcde"
puts s[5..10]

#特定の文字の場所を探して部分文字列取得とかありがちじゃない?
target = "あいうえお-かきくけこ"
puts target[target.index("-") + 1..target.length]

#文字列比較
#普通の文字列比較
puts "true" if "aaa" == "aaa"

#case-insensitiveな比較
#upperしてから比較
puts "true" if "aaa".upcase == "Aaa".upcase

#rubyでは==とeql?が同値性比較でequal?が同一性比較
puts "a" if [1,2] == [1,2]

puts "b" if [1,2].eql?([1,2])

puts "c" if [1,2].equal?([1,2])

arr = [1,2]
puts "d" if arr.equal?(arr)


#数字→文字列
puts 123.000.to_s

#文字列→数値
puts "123".to_i + 1
puts "123.000".to_f + 1

#日付→文字列
#現在日付
dt = Time.now
puts dt.strftime "%Y/%m/%d %H:%M:%S"

#文字列→日付
require "time"
puts Time.parse("2008/07/10 12:13:14").strftime "%Y-%m-%d %H-%M-%S"

#標準出力に出力
puts "こんにちは"

#フォーマットするならprintf
printf "%s-%s-%s", 1, 2,3

#標準入力から読み込み
printf (s = readline) until s == "exit\n"

#コマンドライン引数の取得
ARGV.each{|arg| puts arg}

#こっちでもいい
$*.each{|arg| puts arg}

#コマンド名をとるときは$0fで
puts $0