1、Ruby中将一个字符串的首字母变为大写capitalize()方法
字符串.capitalize
例如:
def say_goodmorning(name)
result = "good morning #{name.capitalize}"
return result;
end
puts say_goodmorning('liuyazhuang") 打印的结果是good morningLiuyazhuang首字母大写
注:可以在字符串中加入#{}来使用任意复杂的表达式;
2、<<
通常在数组中使用"<<"方法,表示把值追加到数组的接收器上。
在创建以单词为元素的数组时,Ruby有个捷径
例如:att=['hello','world'] 等同于:attr=%w{helloworld}
3、Ruby中的散列
散列值使用花括号而不是方括号,对于每个元素,必须提供两个对象:键和值
例如:一个散列值如下:
inst_names{
:cell =>'String',
:name =>'liuyazhuang',
:age =>'23'
}
左边的是键,右边的是值,根据键取值:
inst_names[:cell]返回String inst_names[:name] 返回liuyazhuang inst_names[:age]返回23
当要取得值在散列中没有时,则返回nil。如:inst_names[sex]返回 nil;
4、Ruby中的正则
Ruby中使用代码/pattern/或%R{pattern}来生成正则表达式
例如:对于所有包含"peral"或'pair'的字符串,可以编写与之相匹配的表达式/peral|pair/,也可以写成/p(eral|air)/(相当于提取公因式),程序通常使用=~来匹配运算符,来判断字符串是否匹配正则表达式
例如:
ifline=~/p(eral|air)/
puts "匹配";
end
/ab+c/:匹配以单个字母a开头,紧跟着单个或多个字母b,最后以单个字母c开头的字符串;
/ab*c/:匹配单个字母a开头,紧跟0个或多个字母b,最后以单个字母c开头的字符串
\d:匹配任何数字、 \s :匹配任何空白字符 \w匹配任何字母与数字的组合(单词)
5、代码块和迭代器
(1)代码块是由{}或者do...end及其内部代码所组成的。{}用于只有单行语句的代码块,do...end用于多行语句的代码块
如:{puts "hello"}
do
club.hello("hello");
clib.puts("hello")
end
将代码块传递给方法时,只要将代码块放在方法的参数(如果有参数)后,
例如:greet {puts "hi"}
如果方法参数是带参数的:可以把参数放到代码块前:
verbose_greet("liuyazhuang","xingming"){puts "hi"}
通过使用Ruby语句yield方法可以一次或多次的调用与其相关联的代码块
(2)迭代器
animals =%w(dog, cat);
animals.each{|animal|putsanimal}
(3)其他
每个整数N实现times方法,该方法调用N次
3.times{puts "hi"} 输出三个hi
6、Ruby中的异常
Ruby中的raise方法通常用于抛出异常;方法 和代码块都包含在begin和end中,用rescue来拦截某种异常类;
begin
content= load_blog_data(file_name)
rescueBlogDataNotFound
STDERR.puts "File #{file_name} notfound";
rescueBlogDataFormatError
STDERR.puts "Invalid blog data in #{file_name}";
rescue Exception=>ex
STDERR.puts "General error loading#{file_name} :#{exc.message}";
end
Resuce可以直接放在方法定义的最外层,并不需要包含begin/end块中的内容