class ChineseNumber
Numbers = ['一','二','三','四','五','六','七','八','九','十']
attr :chinese_number
def initialize(value)
if Numbers.include?(value)
@chinese_number =value
else
raise '数字不正确'
end
end
#转换整数
def to_num
(Numbers.index(@chinese_number)+1) if @chinese_number
end
def to_s
@chinese_number
end
def succ
raise(IndexError,'超出数字范围') if self.to_num>=10
ChineseNumber.new(Numbers[self.to_num])
end
def <=>(other)
self.to_num<=> other.to_num
end
end
def ChineseNumber(val)
ChineseNumber.new(val)
end
one = ChineseNumber('一')
four=ChineseNumber('四')
# puts "#{one} => #{one.to_num}"
# puts "#{one}的下一个是#{one.succ}"
range = one..four
puts ChineseNumber("三").class
puts range.include?(ChineseNumber("三"))
puts range.to_a.include?("三")
range.to_a.each{|i| puts i if i.include?(ChineseNumber("三"))}
# puts range
str =<<HERE
This is a test document.
It contains a lot of date string like 2008-01-02.
It's created at 2008-03-21
HERE
r=/(\d{4})-(\d{2})-(\d{2})/
matches = str.scan(r)
print matches
str.scan(r) do |year, month, day|
puts "#{year}年#{month}月#{day}日"
end
#[["2008", "01", "02"], ["2008", "03", "21"]]2008年01月02日
# 2008年03月21日
t=Time.local(2008,4,1,8,10,01)
puts t.strftime("%Y-%m%d %H:%M:%S")
#2008-0401 08:10:01