数组常见运算方法
<< 追加元素 例如:[1,2]<<3 返回[1,2,3]
+ 串联方法 合并两个数组 例如:[1,2]+[3,4] 返回[1,2,3,4]
- 数组差集 删除比较数组中出现的元素 例如: [1,2,3]-[3,4] 返回[1,2]
& 数组交集 例如[1,2,3]&[3,4] 返回[3]
| 数组并集 例如:[1,2,3]|[3,4] 返回[1,2,3,4]
* 重复数组 如果*后面是整数则重复整数次数组,如果为字符串,则使用此字符串连接数组元素
例如:
[1,2,3]*2 #返回[1,2,3,1,2,3]
puts [1,2,3]*"--" #返回 1--2--3
数组具有枚举模块的所有方法。
其他常用方法
ary = []
ary.size/ary.length #返回数组的长度
ary.concat(other_array) #将other_array中的数组附加到ary中
ary.clear #清空数组
ary.delete(obj) #删除数组中与obj相等的元素,找到则返回,否则返回nil
ary.delete_at(index)#删除指定下标处的元素
ary.delete_if { |item| block } #删除指定条件的元素(block返回true)
ary.first/ary.last #返回数组的第一个/最后一个元素
ary.compact #返回一个数组的副本,删除其中的nil元素
ary.flatten #返回一个只包含基本元素的数组
ary.index(obj) #返回第一个等于obj的元素下标
ary.insert(index, obj) #在指定位置插入对象到数组中
ary.join(sep) #合并数组为一个字符串,["a","b","c"].join("-") 返回a-b-c
ary.pop/ary.shift #删除数组中的最后一个/第一个元素
ary.push(obj) #类似于<<方法,将obj添加到数组中
ary.replace(other_array)#使用other_array替换掉数组中的内容
ary.reverse #反转数组中的元素
散列hash
Ruby中散列直接对应的是Hash类,以下为创建一个散列的一些方法
s = Hash.new
s = Hash[1=>"a",2=>"b"]
s = {1=>"a",2=>"b"}
s = {:aa=>1,:bb=>2} #使用符号作为散列的键
散列的常用方法
hsh = {:aa=>1}
hsh.clear #清空散列中所有键和值
hsh.delete(key) #删除散列中键为key的项
hsh.delete_if { |key,value| block } #根据条件删除散列中的元素
hsh.has_key?(key) #检测是否含有键key
hsh.has_value?(value)#检测是否含有值value
hsh.index(value) #返回散列中值等于vlaue的键,返回第一个,没有返回nil
hsh.invert #返回逆转散列的键和值的新散列
hsh.keys #返回散列的键组成的数组
hsh.values #返回散列的值组成的数组
hsh.values_at(key) #返回给定的键,对应的值数组
hsh.length #返回散列中元素个数
hsh.merge(other_hash)#合并两个散列,如有重复键则使用other_hash中的值覆盖hsh中的值
hsh.replace(other_hash)#使用other_hash中的值替换hsh中相同键的值
hsh.to_a #将散列转换为数组
正则表达式
创建方法
r = Regexp.new("\d")
r = /\d/
r = %r{\d}
创建好了正则表达式对象就可以是用=~或match方法对字符串进行匹配
如:
str="2010-01-01 |||| 2010-01-01"
r = /\d{4}-\d{2}-\d{2}/
matches = str.scan(r)
puts matches
puts "============="
str.scan(r) { |match| puts match }
#输出:
#2010-01-01
#2010-01-01
#=============
#2010-01-01
#2010-01-01
时间Time
now = Time.now
old = Time.local(1966,12,12,18,15,20)
puts now
puts old
puts old.strftime("%Y-%m-%m %H:%M:%S")
输出:
2010-06-04 18:03:22 +0800
1966-12-12 18:15:20 +0800
1966-12-12 18:15:20