陈斌彬的技术博客

Stay foolish,stay hungry

Ruby - 字符串(原创)

字符串 (String)

前面的实验其实已经使用过 String 类,这里我们将更详细地讨论更多的用法。

这样一个简单的程序:

#!/usr/bin/ruby

str = 'hello ruby'
puts str

1. 转义字符

我们想要它的内容中有更多丰富的东西,不可避免会使用到 转义字符 。Ruby 中的转义字符和其它很多语言类似,以下是一些常见的:

符号  描述
\a  报警符
\b  退格
\f  换页符
\n  换行符
\r  回车符
\s  空格符
\t  制表符
\v  垂直制表符符

注意以下情况:

#!/usr/bin/ruby

str1 = 'hello \n str1'
puts str1

str2 = "hello \n str2"
puts str2

执行结果将会是:

img

这是因为双引号括起来的字符串内,转义字符会被解释; 而单引号括起来的字符串内,转义字符会被保留为普通字符。

2. String 类的内置方法

和其它很多编程语言一样,Ruby 中对 String 类有很多内置的方法。下面举例说明。

#!/usr/bin/ruby

str1 = "I love Ruby"
str2 = str1.reverse     # 倒序
str3 = str1.delete("y") # 删除字符“y”
str4 = str1.sub("love","hate")  # 替换

puts str2
puts str3
puts str4

运行:

img

点击这里查看 String 类的更多内置方法

数组 (Array)

Ruby 中的数组从 0 开始编号,这与其它很多语言一样。数组中可以存储 String, Integer, Float 等类型的元素,甚至也可以是另一个数组。

数组有多种创建方式,比如:

shuzu_1 = Array.new     # 创建一个数组
shuzu_2 = Array.new(10) # 创建一个有 10 个元素的数组
shuzu_3 = Array.new(4,"test") # 4 个元素,每个元素都是 'test'
shuzu_4 = Array[1,2,3,4]  # 4 个元素的数组,给每个元素赋值

数组类也有很多内置的方法,这里也举例说明:

shuzu_1 = Array['a','b','c','d','e']
shuzu_2 = Array['c','d','f','g','e']

shuzu_3 = shuzu_1 & shuzu_2  # 两个数组的交集
shuzu_4 = shuzu_1 + shuzu_2  # 两数组连接
shuzu_5 = shuzu_1 | shuzu_2  # 两数组合并,去除重复
shuzu_6 = shuzu_1 - shuzu_2  # 两数组相减
shuzu_1.delete_at(3)         # 去除第 3 个元素
shuzu_7 = shuzu_1.insert(3,'d') # 在第 3 位置插入元素 'd'
shuzu_8 = shuzu_2.sort       # 对数组中的元素排序

Hash

Hash 与 数组 十分相似,不过 Hash 保存的是 键值对 (key-value)的组合,键和值可以是 String, Integer, Float, Array, Hash 各种类型。

与数组很像,我们有各种方式创建 Hash:

hs = Hash.new     # 创建一个 Hash
hs_2 = Hash.new("month") # 创建一个默认值是 "month" 的 Hash
hs_3 = Hash["ja"=>"January", "fe"=>"February"] # 第1对:key=ja, value=January;第2对:key=fe, value=February

Hash 也有各种内置方法,比如:

hs = Hash["t"=>"Tom", "m"=>"Mary", "r"=>"Rose", "k"=>"King"] 

hs.["t"]         # 使用键 "t" 从 Hash 引用值
hs.["t"]="Tony"  # 将键 "t" 对应的值改为 "Tony"
hs.delete("m")   # 删除键 "m" 对应的键值对
hs.index("Rose") # 查找值 "Rose" 对应的键