Ruby字符串、条件、循环、数组、Hash、类基本操作笔记
一、字符串操作
字符串插值
1.#{}:任意放置在#{}中的合法Ruby代码都将被求值,并被替换为求值结果插入到原位置
2.单引号与双引号差别:
双引号允许字符转义,单引号不允许转义,里是什么字符,用户看到的就是什么字符
单引号不允许字符插值
字符串拆分
1.以空格拆分:string.split('')字符串连接
方法一、'Ruby'+'Monk',stdout:RubyMonk
方法二、"Monk".concat("Ruby")stdout:MonkRuby
方法三、"Ruby"<<"Monk"stdout:RubyMonk
子字符串替换
替换第一个出现的搜索目标:"IshouldlookintoyourproblemwhenIgettime".sub('I','We')
替换所有符合条件的字符串:"IshouldlookintoyourproblemwhenIgettime".gsub('I','We')
二、条件与循环:Ruby中的控制结构
Ruby布尔表达式
Ruby使用==运算符来比较对象:name=="Bob"
取非表达式:!(name=='Bob')
if..else结构在Ruby语言中,?和:可以理解为它们分别对应"then"和"else"Ruby语言中的循环
1.无限循环
loopdo ..... end
2.执行代码片段N次
timesdo ...... end
三、数组
创建空数组'[]'或者Array.new
在数组里查询数据
[1,2,3,4,5][2]
结果是
3
Ruby的索引从开头开始是从0开始的,从结尾开始是从-1开始的
数组的增长
[1,2,3,4,5]<<"woot"结果 [1,2,3,4,5,"woot"]
基本数组运算
1.数组变换
[1,2,3,4,5].map{|i|i+1}
结果
[2,3,4,5,6]
2.过滤数组元素
[1,2,3,4,5,6,7].delete_if{|i|i<4}
结果
[2,4,6]
提取长于五个字母的字符串
names=['rock','paper','scissors','lizard','spock'] names.select{|word|word.length>5}
结果
["scissors","lizard"]
3.删除元素
删除下面数组的元素‘5'
[1,3,5,4,6,7].delete5 [1,2,3,4,5,6,7].delete_if{|i|i<4}
迭代1.each循环
array=[1,2,3,4,5] array.eachdo|i| putsi end
四、Ruby哈希
1.创建一个哈希空哈希可以使用两个大括号{}来定义,Hash.new
restaurant_menu={ "Ramen"=>3, "DalMakhani"=>4, "Tea"=>2 }
2.从哈希中取值从restaurant_menu哈希中取得一碗拉面(Ramen)的价格
restaurant_menu["Ramen"]结果
3.修改哈希添加新项
restaurant_menu={} restaurant_menu["DalMakhani"]=4.5 restaurant_menu["Tea"]=24.遍历哈希 restaurant_menu={"Ramen"=>3,"DalMakhani"=>4,"Coffee"=>2} restaurant_menu.eachdo|item,price| puts"#{item}:$#{price}" end
结果
Ramen:$3 DalMakhani:$4 Coffee:$2
用each方法把restaurant_menu中所有项目价格都提高10%
restaurant_menu={"Ramen"=>3,"DalMakhani"=>4,"Coffee"=>2} restaurant_menu.eachdo|item,price| restaurant_menu[item]=price+(price*0.1) end
5.从哈希中取键和值
每个哈希对象都有2个方法:keys和values。
keys方法返回一个包含哈希中所有的键的数组;类似的,values方法返回一个包含所有的值的数组。
获得restaurant_menu哈希中所有的键
restaurant_menu={"Ramen"=>3,"DalMakhani"=>4,"Coffee"=>2} restaurant_menu.keys
结果
["Ramen","DalMakhani","Coffee"]
五、类
Ruby使用两个空格缩进的惯例,代码块通常以关键字end封闭通常,在某个类上调用方法new会创立一个实例
Object.new
1.构建你自己的类
classRectangle end
计算长方形的周长和面积类实例
classRectangle definitialize(length,breadth) @length=length @breadth=breadth end
defperimeter 2*(@length+@breadth) end
defarea @length*@breadth end end