Ruby一个重要思想就是一切皆对象
其中常数都可以当做对象使用函数,ruby直接就支持大数。
9.class #显示数据类型
3.zero? #zero? 其中问号是函数的一部分
10.modulo(3) #取余
(3.3).round #近似值
ruby函数用def定义,其中返回值是否使用return是可选的,它默认会返回值。
Ruby变量:
ruby变量的使用不需要类型的声明,而且变量的规则根据变量的命名形式来定义。
以$开头的是全局变量
以@开始的是局部变量
大写字母开始的变量首次赋值后就当常量使用
Ruby字符串:
word = "hello"
puts word[0] #104,字符的ASCII值
puts word[0].chr #h
puts word[-1].chr #o
puts word[1..3] #ell
常用的一些函数:
.chomp #去除结尾的换行符'\n'
.reverse #倒序
.reverse! #倒置并将结果保存到数组
“#{}” 在双引号中解析表达式
Time.now.strftime("%m-%d-%Y") #获取当前时间
正则表达式:
提取符合要求的子串:(目前刚学用比较土的方法先实现以下)
str[/@\w*/][1..-1] #利用正则表达式提取str中以'@'开头的变量
若 str = "@abc = 123" 则上式提取出“abc”
#gsub 可以根据正则表达式提取子串
str.gsub(/[\'\"]/, "") #将字符串中的单引号,双引号都去掉,注意会全部去掉
phrases = ["Tome Jerry", "Jerry Tom", "Tom"]
puts phrases.grep(/\ATom\b/) #\A表示查找以"Tom"开头的,\b表明查找的是一个单词,即"Tome"就不会被选中
puts phrases.grep(/\bTom\b/) #查找包还"Tom"的字符串
#如果希望匹配Greg或者Gregory该如果写?以下哪个准确?
puts "Gregor"[/\bGreg(ory)?/]
puts "Gregor"[/\bGreg(ory)?\b/]
* 匹配任何个数,包括0个。默认情况下*会匹配尽可能多,如果
+ 至少有一个才匹配,也可以写作 {1,}
? 出现1次或0次,同{0,1} * 和 +
限定符都是贪婪的,因为它们会尽可能多的匹配文字,在它们的后面加上一个?就可以实现非贪婪或最小匹配。如*?或+?
参考:
http://www.ruby-lang.org/zh_cn/documentation/
《Ruby最佳实践》