Ruby 手册 | 16 - 字符串类型

150 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情

一、字符串

Ruby 中的字符串时使用频率最高的数据类型,Ruby 中的 String 类型包含非常多的方法。

图片.png

在 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