携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情
一、字符串
Ruby 中的字符串时使用频率最高的数据类型,Ruby 中的 String 类型包含非常多的方法。
在 Ruby 中字符串使用单引号或者双引号表示,例如:
s1 = "tony"
s2 = 'stark'
如果一个字符串中包含单号或者双引号,可以使用单双引号交替的方式或者使用字符串表示法来表示,Ruby 中提供了 %、%q 和 %Q 等字符串表示法
s3 = %{He said "My name is Tony"}
s4 = 'He said his name is "tony"'
s5 = %q{He said his name is "tony"}
s5 = %{He said his name is "tony"}
%q 不支持转义字符,%Q 支持转义字符。
Ruby 中还提供了一种成为 here 的文档的字符串表示法,特别适合多行的大段文字。使用常规的引号包含时如果跨行、缩进的字符串也会被包含,而 here 文档则不会。
here 文档的是以 << 符号和一个字符为开头,后面接一个字符作为结束标记,然后就是需要多行表示的字符串内容,最后一行单独一个字符作为结束标记。这个字符可以自定义,但是前后字符要一致
s6 = <<STR
这是第一行内容
这是第二行内容
这是第三行内容
STR
s7 = <<DOC
这是第一行内容
这是第二行内容
这是第三行内容
DOC
也可以叠加使用
s8 = <<HERE, <<STR
这是第一行内容
这是第二行内容
HERE
这是第三行内容
STR
二、转义符和嵌入字符串
使用单引号包含的字符串含义比较简单,使用双引号和 here 文档表示法的字符串可以支持转义字符和嵌入字符串。
转义符是使用 \ 符号的一种表示方法,通常用于一些特殊字符的表示,常用的转义字符有:
\t:TAB 符号\n:换行 符号\r:回车 符号\f:换页 符号
puts "这是第一行内容\n这是第二行内容"
执行上述代码,输出结果如下:
这是第一行内容
这是第二行内容
嵌入字符串也可以叫插值表示法,就是把一个变量的字符串形式插入到另一个字符串中,使用的格式是 #{valName} 如果变量不是字符串类型,则会调用变量对象的 to_s 方法转换为字符串(隐式转换)在进行嵌入
name = "Ruby"
puts "Hello #{name}"
age = 23
puts "我今年 #{age} 岁"
list = ["a", 1, "c"]
puts "list 中包含了 #{list}"
执行上述代码,输出内容如下:
Hello Ruby
我今年 23 岁
list 中包含了 ["a", 1, "c"]
三、字符串的基本操作
字符串的基本操作如下:
- str[intdex]:传入索引,返回该位置的字符对应的 ASCII 码
- str[start,end]:传入两个索引,截取字符串,如果索引为负数则从尾部开始数起,起始索引为 0,尾部开始的起始索引为 -1
- str[range]:传入一个区间参数,返回区间指定位置的子字符串
- str[regex]:传入一个正则表达式,返回匹配表达式的子字符串,如果匹配不到,返回为空
- str[regex, int]:传入一个整数和一个索引值,返回符合正则表达式结果的子字符串中的索引位置的字符,如果没有返回为空
- str[string]:传入一个字符串参数,如果字符串包含这个字符串参数,则返回这个字符传参数,否则返回为空
str = "Welcome Ruby Programming World"
puts str[1]
puts str[0, 3]
puts str[0 .. 3]
puts str[-4, 4]
puts str[/n([a-z])/]
puts str[/n([a-z])/, 1]
puts str[/n([0-9])/]
puts str[/n([0-9])/, 1]
puts str["Ruby"]
puts str["Python"]
执行上述代码,输出结果如下:
e
Wel
Welc
orld
ng
g
Ruby