`
mynaAo7I
  • 浏览: 12394 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Ruby入门学习之四

    博客分类:
  • Ruby
阅读更多

~_~今天周六,明天写文档,所以今天又看了一些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

 基础居多,需要多加练习。:)

1
0
分享到:
评论

相关推荐

    Ruby基础和特点,Ruby入门学习资料.pdf

    Ruby基础和特点,Ruby入门学习资料.pdf

    ruby基础教程(中文第四版).epub

    排班精美,图文清晰。是市面上最适合初学者入门的 Ruby 教程,由 ruby 创始人亲自编写。...本书适合Ruby初学者学习参考, 有一定Ruby编程基础的读者若想再回顾一下Ruby的各知识点, 本书也能提供不少帮助。

    Ruby入门教程中文PDF 附实例

    总之,无论你是对编程感兴趣的新手,还是想扩展技能树的开发者,这份“Ruby入门教程中文PDF 附实例”都将是你宝贵的参考资料。通过学习,你不仅可以掌握Ruby的基础知识,还能体验到编程的乐趣和效率。

    Ruby入门学习案例.md

    Ruby入门学习案例(任务)

    ruby学习的源码

    通过深入学习这些内容,初学者不仅可以掌握Ruby的基础,还能熟悉Rails的开发流程,进一步提升Web开发能力。同时,不断实践和阅读优秀的源码是提升编程技能的关键,因此这份资料包对于Ruby学习者而言无疑是宝贵的财富...

    ruby基础学习资料

    这个“ruby基础学习资料”压缩包很显然是为那些想要入门或者深入理解Ruby的人准备的。让我们详细探讨一下Ruby的基础知识。 1. **变量与数据类型**: Ruby支持五种基本的数据类型:符号(Symbol)、字符串(String...

    Ruby基础教程(第5版)1

    《Ruby基础教程(第5版)》是一本由日本...总的来说,《Ruby基础教程(第5版)》是一本全面、易懂且充满乐趣的Ruby学习资料,无论你是编程新手还是希望深入理解Ruby的开发者,都可以通过这本书开启或深化你的Ruby之旅。

    ruby入门到精通

    这本书“Ruby入门到精通”显然旨在引导初学者逐步掌握Ruby语言。以下是一些关键知识点,它们可能是书中涉及的内容: 1. **基础语法**:包括变量(本地、实例、类和全局变量)、常量、符号、字符串、数字、数组和...

    ruby中文教程,从基础到深入的让你学习ruby

    在学习Ruby的过程中,你还需要了解一些工具,如Ruby的解释器irb(交互式Ruby环境)和ri/rdoc(Ruby文档工具),它们有助于调试和理解代码。版本管理工具如RVM(Ruby Version Manager)和rbenv可以帮助你管理多个Ruby...

    Ruby基础教程(中文第4版)

    总的来说,《Ruby基础教程(中文第4版)》是学习Ruby编程的全面指南,无论你是刚接触编程的新手还是寻求提高的开发者,都能从中受益。通过阅读这本书,你将能够熟练掌握Ruby语言,利用它的强大功能构建高效、可维护的...

    Ruby相关入门教程网址

    总的来说,这份Ruby入门教程应该能帮助初学者建立起对Ruby语言的全面认识,从基础语法到高级特性,再到实际开发中的工具使用,为进入Ruby世界提供了一条清晰的学习路径。通过深入学习和实践,读者将能够运用Ruby进行...

    ruby入门书籍

    《Ruby入门书籍》可能是一本详细介绍Ruby编程语言的基础教程。根据提供的文件名,我们可以推测这本书籍可能包含了两个部分:中文文档和"The Ruby Way"的翻译或解读。 "ruby中文文档.chm"可能是对Ruby语言的中文详细...

    Ruby新手学习书(Ruby语言中文教程)和Rails_4_days

    "Ruby新手学习书"和"Rails_4_days"这两个资源是为初学者设计的,旨在帮助他们快速掌握Ruby语言的基础以及Rails框架的核心概念。 在Ruby语言中文教程中,你将学到以下关键知识点: 1. **基础语法**:Ruby的语法简洁...

    关于ruby学习的资料

    Ruby的学习资源丰富多样,包括书籍、在线教程、社区论坛等,帮助初学者和进阶者深入理解其语法特性、编程思想以及实践应用。 "trap.chm"文件可能是一个帮助文档,通常用于存储各种信息和指南。在Ruby学习中,这样的...

    Ruby语言入门教程v1.0

    第四章深入探讨了面向对象编程的思想,这是理解Ruby的关键之一。教程解释了对象、封装、继承和多态这些OOP核心概念,并通过实际示例展示了如何在Ruby中应用它们。对于希望掌握OOP原理的学习者来说,这部分内容尤为...

    Ruby 基础语法 视频教程1

    学习这些基础概念是理解Ruby编程的关键。通过`ruby-4-variables.mp4`和`ruby-5-variables-rules.mp4`,你可以深入理解变量的用法和规则,而`ruby-6-expression.mp4`将帮助你掌握如何在Ruby中构建和使用表达式。这些...

    Ruby基础语法经典学习PPT教程

    Ruby基础语法经典学习PPT教程. 网上关于ruby的PPT教程不太多,这个个人觉得还可以。

Global site tag (gtag.js) - Google Analytics