~_~今天周六,明天写文档,所以今天又看了一些Ruby的东西。贴代码。
另外贴一个Vim下Ruby自动补全的配置。
http://hooopo.iteye.com/blog/426782
1 IO类
io = open("foo.txt"){|eo|
while line = eo.gets
puts line
end
}
io = open("foo.txt")
io.close
#判断io对象是否关闭
p io.closed?
require "open-uri"
#通过HTTP读取数据
open("http://www.ruby-lang.org"){|io|
puts io.read
}
io = open("foo.txt")
while line = io.gets
line = chomp!
end
p io.eof?
io.close
io = open("foo.txt")
while line = io.gets
printf("%3d %s",io.lineno, line)
end
io.close
puts "a","b","c"
#pos方法
io = open("foo.txt")
p io.read(5)
p io.pos
io.pos
io.pos = 0
p io.gets
#将文件指针移到文件最前端
io.rewind
p io.pos
p io.gets
puts "-------------------------练习----------------------"
def fun(filename)
io = open(filename)
l = 0
w = 0
c = 0
while line = io.gets
l += 1
c += line.size
line.sub!(/^\s+/,"")
ary = line.split(/\s+/).size
w += ary.size
end
printf(" 行数 单词数 字符数 文件名\n")
printf("%8d %8d %8d %s\n",l,w,c,filename)
end
fun("foo.txt")
2 Regexp(正则表达式类)
#建立正则表达式
r1 = /Ruby/
p r1
r2 = Regexp.new("Ruby")
p r2
r3 = %r(Ruby)
p r3
#^ $分别表示行头与行尾
p /^ABC$/ =~ "012\nABC" #!注意匹配的是行头行尾,非字符串头与尾
print str = "ABC\nABC" #ABC
#ABC
#\A \Z分别表示字符串头与字符串尾
p /\AABC\Z/ =~ str #=>nil
#[]表示与其中任何一个匹配
p /[012ABC]/ =~ "A" #=>0
p /[012ABC]/ =~ "ACD" #=>0
#[-]表示范围
p /[A-Za-z]/ =~ "1dshhuSSFF" #=>1
p /[A-Za-z_-]/ =~ "12--" #=>2
p /[^A-Za-z_-]/ =~ "--" #=>nil
#.代表一个字,不管是什么
p /A.C/ =~ "A1C" #=>0
p /A..C/ =~ "A11C" #=>0
p /A..C/ =~ "A1C" #=>nil
#\s表示空白(空格,tab,换行,换页)
p /A\sB/ =~ "A B" #=>0
p /A\sB/ =~ "A\tB" #=>0
p /A\sB/ =~ "A\nB" #=>0
p /A\sB/ =~ "AB" #=>nil
#\d与0~9匹配
#\w与英文和数字匹配
#*表示前面紧挨着的一个字符出现与不出现都匹配
#+表示前面紧挨着的一个字符出现才匹配
#?表示前面紧挨着的一个字符出现1次或者不出现才匹配
p /12A*/ =~ "" #=>nil
p /12A*/ =~ "12" #=>0
p /^Subject:\s*.*$/ =~ "Subject: foo"
#?前面的字符为.,表示任意字符,也就是说任意字符出现或出现一次
#.?两个加一起是一个字符或没有字符
p /A.?C/ =~ "AC" #=>0
p /A.C/ =~ "AC" #=>nil
#*? +?最短匹配
p "ABCDABCDABCD".slice(/A.*B/) #=>"ABCDABCDAB"
p "ABCDABCDABCD".slice(/A.*?B/) #=>"AB"
#()配合* + ?表示多个字的反复
p /(ABC)+/ =~ "daABCABC"
#表示括弧里匹配结果
p $1
#|表示多选
p /(AB|CD)/ =~ "CD"
p $1
#$’$&$‘中间的表示匹配部分
p $’ #=>nil
p $& #=>"CD"
p $‘ #=>nil
#sub,gsub会取代字符串,不同之处在于sub只取代第一处
#gsub全部取代
str = "THis is a man"
p str.downcase!.capitalize!.gsub!(/\s./){|matched| #=>"This Is A Man"
matched.upcase
}
p str #=>"This Is A Man"
#scan只查找所有匹配的,不取代
"abraca".scan(/.a/){|matched|
p matched #=>"ra"
} #=>"ca"
"abraca".scan(/(.)(a)/){|a,b|
p a + b #=>"ra"
} #=>"ca"
"abraca".scan(/(.)(a)/){|matched| #=>["r","a"]
p matched #=>["c","a"]
}
puts "----------------------------练习-----------------------"
p /(.*)@(.*)/ =~ "dsd@gmail.com"
p $1
p $2
str = "in-rEp-to"
p str.downcase!.capitalize!.gsub!(/-./){|matched|
matched.upcase
}
3 Dir类和File类
def traverse(path)
if FileTest.directory?(path)
dir = Dir.open(path)
p dir
while name = dir.read
next if name == "."
next if name == ".."
traverse(path + "/" + name)
end
dir.close
else
process_file(path)
end
end
def process_file(path)
puts path
end
traverse("/home/anity/xxx") #/home/anity/xxx/aa
p Dir.pwd
p File.expand_path("bin")
p Dir.pwd
p File.expand_path("../bin")
require 'etc'
include Etc
st = File.stat("/home/anity/ruby")
pw = getpwuid(st.uid)
p pw.name
gr = getgrgid(st.gid)
p gr.name
filename = "/home/anity/ruby/foo.txt"
open(filename,"w").close
st = File.stat(filename)
p st.ctime
p st.mtime
p st.atime
File.utime(Time.now - 100 , Time.now - 100 ,filename)
st = File.stat(filename)
p st.ctime
p st.mtime
p st.atime
p File.basename("/home/anity/ruby/foo.txt")
p File.basename("/home/anity/ruby/foo.txt",".txt")
p File.dirname("/home/anity/ruby/foo.txt")
p File.dirname("foo.txt")
p File.extname("/home/anity/ruby/foo.txt")
p File.split("/home/anity/ruby/foo.txt")
dir , base = File.split("/home/anity/ruby/foo.txt")
p dir
p base
p File.join(dir , base)
4 Time类,DateTime类,Date类
t = Time.new
p t
t = Time.now
p t
p t.year
p t.month
p t.day
p t.hour
p t.min
p t.sec
p t.to_i
p t.wday
p t.mday
p t.yday
p t.zone
t = Time.mktime(2009,12,11,3,15,59)
p t
p t.strftime("%Y/%m/%d %H:%M:%S")
p t.strftime("%a %b %d %H:%M:%S %Z:%Y")
t = Time.now
p t
t.utc
p t
require "date"
t1 = DateTime.now
sleep(1)
t2 = DateTime.now
p t2 - t1
t = DateTime.now
puts t
puts t + 10
require "date"
d = Date.today
puts d.year
puts d.month
puts d.day
puts d
puts Date.new(2009,2,-1)
puts d + 1
puts d - 2
puts d >> 3
puts d << 10
基础居多,需要多加练习。:)
分享到:
相关推荐
Ruby基础和特点,Ruby入门学习资料.pdf
排班精美,图文清晰。是市面上最适合初学者入门的 Ruby 教程,由 ruby 创始人亲自编写。...本书适合Ruby初学者学习参考, 有一定Ruby编程基础的读者若想再回顾一下Ruby的各知识点, 本书也能提供不少帮助。
总之,无论你是对编程感兴趣的新手,还是想扩展技能树的开发者,这份“Ruby入门教程中文PDF 附实例”都将是你宝贵的参考资料。通过学习,你不仅可以掌握Ruby的基础知识,还能体验到编程的乐趣和效率。
Ruby入门学习案例(任务)
通过深入学习这些内容,初学者不仅可以掌握Ruby的基础,还能熟悉Rails的开发流程,进一步提升Web开发能力。同时,不断实践和阅读优秀的源码是提升编程技能的关键,因此这份资料包对于Ruby学习者而言无疑是宝贵的财富...
这个“ruby基础学习资料”压缩包很显然是为那些想要入门或者深入理解Ruby的人准备的。让我们详细探讨一下Ruby的基础知识。 1. **变量与数据类型**: Ruby支持五种基本的数据类型:符号(Symbol)、字符串(String...
《Ruby基础教程(第5版)》是一本由日本...总的来说,《Ruby基础教程(第5版)》是一本全面、易懂且充满乐趣的Ruby学习资料,无论你是编程新手还是希望深入理解Ruby的开发者,都可以通过这本书开启或深化你的Ruby之旅。
这本书“Ruby入门到精通”显然旨在引导初学者逐步掌握Ruby语言。以下是一些关键知识点,它们可能是书中涉及的内容: 1. **基础语法**:包括变量(本地、实例、类和全局变量)、常量、符号、字符串、数字、数组和...
在学习Ruby的过程中,你还需要了解一些工具,如Ruby的解释器irb(交互式Ruby环境)和ri/rdoc(Ruby文档工具),它们有助于调试和理解代码。版本管理工具如RVM(Ruby Version Manager)和rbenv可以帮助你管理多个Ruby...
总的来说,《Ruby基础教程(中文第4版)》是学习Ruby编程的全面指南,无论你是刚接触编程的新手还是寻求提高的开发者,都能从中受益。通过阅读这本书,你将能够熟练掌握Ruby语言,利用它的强大功能构建高效、可维护的...
总的来说,这份Ruby入门教程应该能帮助初学者建立起对Ruby语言的全面认识,从基础语法到高级特性,再到实际开发中的工具使用,为进入Ruby世界提供了一条清晰的学习路径。通过深入学习和实践,读者将能够运用Ruby进行...
《Ruby入门书籍》可能是一本详细介绍Ruby编程语言的基础教程。根据提供的文件名,我们可以推测这本书籍可能包含了两个部分:中文文档和"The Ruby Way"的翻译或解读。 "ruby中文文档.chm"可能是对Ruby语言的中文详细...
"Ruby新手学习书"和"Rails_4_days"这两个资源是为初学者设计的,旨在帮助他们快速掌握Ruby语言的基础以及Rails框架的核心概念。 在Ruby语言中文教程中,你将学到以下关键知识点: 1. **基础语法**:Ruby的语法简洁...
Ruby的学习资源丰富多样,包括书籍、在线教程、社区论坛等,帮助初学者和进阶者深入理解其语法特性、编程思想以及实践应用。 "trap.chm"文件可能是一个帮助文档,通常用于存储各种信息和指南。在Ruby学习中,这样的...
第四章深入探讨了面向对象编程的思想,这是理解Ruby的关键之一。教程解释了对象、封装、继承和多态这些OOP核心概念,并通过实际示例展示了如何在Ruby中应用它们。对于希望掌握OOP原理的学习者来说,这部分内容尤为...
学习这些基础概念是理解Ruby编程的关键。通过`ruby-4-variables.mp4`和`ruby-5-variables-rules.mp4`,你可以深入理解变量的用法和规则,而`ruby-6-expression.mp4`将帮助你掌握如何在Ruby中构建和使用表达式。这些...
Ruby基础语法经典学习PPT教程. 网上关于ruby的PPT教程不太多,这个个人觉得还可以。