携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第17天,点击查看活动详情
四、字符串常用方法
Ruby 中对字符串 String 有着非常强大的支持,包含非常多的字符串处理方法,常用的字符串处理方法有:
string.length/string.size:获取字符串的长度string.concat(obj):追加字符串string.capitalize:将字符串首字符大写,其余小写string.delete(obj):返回删除 obj 后的字符串的备份string.delete!(obj):删除 obj 并返回删除后的字符串string.each_byte{|int| block}:对字符串中的每个字节进行迭代string.each_line{|line| block}:对字符串中的每个字符进行迭代string.strip:去除头和尾指定的特殊字符string.downcase:将字符串中的字符全部转换为小写string.upcase:将字符串中的字符全部转换为大写string.include?(obj):判断字符串中是否包含 objstring.index(obj):返回 obj 在序列中第一次出现的位置string.reverse:返回字符串的逆序形式string.split(pattern, <limit>):基于分隔符将字符串分割成若干子字符串,并以数组的形式返回,limit 是可选参数。表示分割的数组的大小。string.scan(pattern):搜索出字符串中所有符合匹配条件的子字符串,并以数组的形式返回
str = " i am God of Thunder "
puts str.length
puts str.size
puts str.capitalize
puts str.downcase
puts str.upcase
puts str.reverse
# 删除
puts "删除相关操作:"
puts str.delete("i")
puts str.delete!("o")
puts str.strip # 去除空格
# 包含与索引
puts "包含与索引操作:"
puts str
puts str.include?("G")
puts str.index("G")
puts "split 操作"
str = "This is a test"
puts (str.split(" ")).class # 返回一个数组
puts (str.split(" ")).to_s
puts "scan 操作"
str = "This is a test"
puts (str.scan(/\w+/)).class
puts (str.scan(/\w+/)).to_s
执行上述代码,输出结果如下:
21
21
i am god of thunder
i am god of thunder
I AM GOD OF THUNDER
rednuhT fo doG ma i
删除相关操作:
am God of Thunder
i am Gd f Thunder
i am Gd f Thunder
包含与索引操作:
i am Gd f Thunder
true
6
split 操作
Array
["This", "is", "a", "test"]
scan 操作
Array
["This", "is", "a", "test"]
五、字符串加密
为了应用的安全性,经常需要对如密码之类的字符串进行加密处理,常用的加密方式有 DES、MD5 和 base64 编码加密方式。
Ruby 的字符串对象中包含有一个 crypt 的方法,可以非常方便的实现 DES 加密,该方法接收一个种子参数,返回加密后的字符串
password = "qaz&123"
puts password.crypt("salt") # sajunvx7dPxt6
MD5 散列值方法时目前被大量应用的一种不可逆的编码方式,Ruby 中提供了一组扩展类来实现 MD5 加密,使用时需要导入 md5 类库
require 'digest/md5'
data = "QAZ123"
#MD5加密
puts Digest::MD5.hexdigest(data) # 1d591d6bdac597cc2c281baf7865fe3c
base64 常用与将二进制数据转换为没有特殊字符的文本形式,有时也可以用于简单的加密,base64 编码和解码最简单的使用方法就是使用 Ruby 内置的功能; Array 对象有一个 pack 方法可以返回 base64 编码,而 String 类也有一个 unpack 方法可以对 base64 编码进行解码
str = "I am God of Thunder"
base64_str = [str].pack("m")
encode_str = base64_str.unpack("m")
puts base64_str
puts encode_str
执行上述代码,输出结果如下:
SSBhbSBHb2Qgb2YgVGh1bmRlcg==
I am God of Thunder