Ruby 手册 | 17 - 字符串处理

175 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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):判断字符串中是否包含 obj
  • string.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