Ruby 是一种解释型、动态、反射性的、面向对象 编程语言。Ruby 由松本行弘(Yukihiro Matsumoto)开发,专注于简单性和生产力。其优雅的语法使开发人员能够更轻松地阅读和编写代码。
在本指南中,我们将使用 Ruby 中的字符串.
前提条件
要执行本教程中演示的步骤,您需要以下组件:
- 配置妥当的 Ubuntu 系统。了解更多关于在 CloudSigma 上配置您自己的 Ubuntu 服务器.
- 任何现代文本编辑器,最好支持语法高亮,例如 VS Code, Sublime Text, Atom, Brackets, Vim等。
字符串数据类型
在编程中,字符串 是每种现代编程语言都支持的常见数据类型。它’的特点是一序列的字符。整个字符序列被视为单个数据。字符串可以包含字母、数字和特殊字符/符号。
Ruby 作为一种纯面向对象的编程语言,将字符串视为对象。与许多其他语言不同,Ruby 中的字符串是可变的。基本上,字符串的值可以就地更改。
步骤 1 – 创建和打印字符串
在 Ruby 中,字符串由单引号( ')或双引号( ")包围。以下是 Ruby 中两个有效的字符串:
|
1 2 |
'the quick brown fox' "jumps over the lazy dog" |
要在控制台屏幕上打印任何输出,Ruby 提供了 print 方法:
|
1 2 |
print 'the quick brown fox' print "jumps over the lazy dog" |
是时候付诸行动了。创建一个新的 Ruby 文件 practice.rb 并输入以下代码:
运行代码:
|
1 |
ruby practice.rb |
正如预期的那样, print 命令会打印提供的字符串。如果我们想在不同的行上打印字符串,最好使用 puts 代替。更新代码:
|
1 2 |
puts 'the quick brown fox' puts "jumps over the lazy dog" |
接下来,再次运行代码:
|
1 |
ruby practice.rb |
步骤 2 – 字符串变量
变量 是指向计算机内存中存储值的特定位置的名称。我们可以在变量中存储所需的值,并在以后使用它。
在 Ruby 中,要声明一个字符串变量,请定义变量名并分配一个字符串值:
|
1 |
<variable_name> = <string> |
在 practice.rb 中编写以下代码::
|
1 2 3 4 |
first_half = 'the quick brown fox' second_half = "jumps over the lazy dog" puts first_half puts second_half |
运行代码:
|
1 |
ruby practice.rb |
这里:
- 我们已经定义了两个变量 first_half 和 second_half,每个都分配了一个字符串值。
- The puts 方法打印变量的值。
步骤 3 – 字符串拼接
通过拼接,我们可以将多个字符串连接在一起以创建一个新字符串。字符串拼接由拼接运算符( +)表示。请注意,在进行算术运算时,此符号也是加法运算符。
让我们尝试对目前为止声明的字符串进行字符串拼接:
|
1 |
puts "the quick brown fox" + "jumps over the lazy dog" |
运行代码:
|
1 |
ruby practice.rb |
正如输出所示,拼接不会在字符串之间引入任何额外的字符。这就是为什么 fox 和 jumps 被挤在了一起。我们可以通过在 后面引入空格来解决这个问题:fox:
|
1 |
puts "the quick brown fox " + "jumps over the lazy dog" |
运行代码:
|
1 |
ruby practice.rb |
现在输出看起来好多了。
字符串拼接也适用于变量。请看以下示例:
|
1 2 |
first_half = "the quick brown fox " puts first_half + "jumps over the lazy dog" |
运行代码:
|
1 |
ruby practice.rb |
下一个示例演示了一个长拼接链:
|
1 2 3 |
username = "cloudsigma" fav_color = "blue" puts "hello, " + username + "! your favorite color is " + fav_color + "." |
运行代码:
|
1 |
ruby practice.rb |
到目前为止,我们只处理了字符串变量。如果有不同的变量类型会怎么样?以下程序测试了这种情况:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts username + user_id |
尝试运行此程序时,Ruby 将抛出错误消息:
|
1 |
ruby practice.rb |
然而,我们可以将整数转换为字符串以避免这个问题:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts username + user_id.to_s |
这里:
-
方法 to_s 将变量值转换为字符串。
在处理邮政编码、货币、电话号码和其他数值数据等元素时,将数字转换为字符串是很常见的情况。
第 4 步 – 字符串插值
虽然字符串拼接是一个强大的功能,但它很容易变得棘手。在许多情况下,你可能会发现自己漏掉了拼接运算符( +),从而导致令人头疼的问题。此外,在处理不同的数据类型时,必须先将其转换为字符串。值得庆幸的是,Ruby 提供了其他方法,可以使用以下功能将变量值注入到字符串中:字符串插值.
示例如下。例如,与其使用:
|
1 |
"hello, " + username + "!" |
我们将使用:
|
1 |
"hello, #{username}!" |
虽然语法看起来可能有点奇怪,但它极大地简化了代码。无需手动调用 to_s 方法来将变量值转换为字符串。
让我们使用这种新技术来更新我们之前的代码:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts "hello, #{username}! your user ID is #{user_id}" |
运行代码:
|
1 |
ruby practice.rb |
第 5 步 – 字符串字面量和字符串值
请注意,代码中声明的字符串总是被引号包围。然而,当将输出打印到控制台屏幕时,并没有引号。它们之间显然是有区别的。
- 字符串字面量:它是写在源代码中的字符串(包括引号)。
- 字符串值:它是打印在输出上的值(不包括引号)。
例如,以下是一个字符串字面量:
|
1 |
"hello world" |
它的字符串值将是 hello world.
第 6 步 – 转义引号和单引号
正如我们所演示的,引号和单引号用于在源代码中表示字符串。这带来了一个问题:你不能直接在字符串中包含它们。否则,会引起问题。以下代码演示了这一点:
|
1 |
puts 'it's what it is' |
有不同的策略可以规避这个问题。
-
使用替代字符串语法
这是解决该问题最简单的方法。如果你的字符串需要单引号,那么在字符串字面量中使用双引号(反之亦然)。
让我们修复上一个示例:
|
1 |
puts "it's what it is" |
另一个示例:
|
1 |
puts 'he said, "hello world"' |
然而,这并不能适用于所有情况。例如:
|
1 |
puts "Clousdigma says, "I'm a happy boi!"" |
-
使用转义字符
反斜杠( \)字符通常被称为转义字符。它阻止 Ruby 字面解释下一个字符。让我们修复上一个示例。使用反斜杠来阻止 Ruby 将内部的双引号解释为字面量:
|
1 |
puts "Cloudsigma说,\"我是一个快乐的男孩!\"" |
-
使用替代语法
到目前为止,我们只使用单引号和双引号来表示字符串字面量。然而,前面的示例简单地演示了这种情况如何很快变得难以控制。为了解决这个问题,我们可以完全抛弃引号,使用一个完全不同的符号来表示字符串的开头和结尾。
请看下面的例子:
|
1 |
%$这只 敏捷的 棕色的 狐狸 说, "我跳过了那只懒狗"$ |
这里:
-
- 符号 % 将下一个字符( $,在本例中)定义为字符串的分隔符。
- 这里的字符串字面量是 $这只 敏捷的 棕色的 狐狸 说, "我跳过了那只懒狗"$.
让我们把它付诸行动:
|
1 |
puts %$这只 敏捷的 棕色的 狐狸 说, "我跳过了那只懒狗"$ |
在这里,该字符串基本上被视为以下内容:
|
1 |
"这只 敏捷的 棕色的 狐狸 说, \"我跳过了那只懒狗\"" |
然而,如果字符串中使用了分隔符,它会重新引入转义分隔符的问题。避免这种情况的一种方法是使用通常不会出现在字符串中的符号。这些符号可以包括花括号、方括号等:
|
1 |
puts %{"你好,世界!", 他 说} |
它也可以完美地与字符串插值配合使用:
|
1 2 3 |
username = "cloudsigma" user_id = 5 puts %{你好, #{username}.#{user_id}!} |
在 Ruby 程序中,通常也会使用 %Q{} 和 %q{} 来定义字符串。在这里, %Q{} 的作用类似于双引号,而 %q{} 的作用类似于单引号。
第 7 步 – 换行符和长字符串
在处理字符串时,有时您会希望在字符串中引入换行符或回车符。我们可以通过引入转义字符 \n(换行符)和 \r(回车符)。
请看下面的例子:
|
1 2 |
hello_world = "这只 敏捷的\n棕色的 狐狸\n跳过\n那只 懒狗" puts hello_world |
字符串字面量看起来很令人困惑,对吧?让我们重新整理它以获得更好的可读性:
|
1 2 3 4 5 6 7 |
hello_world = "这只 敏捷的\n" + "棕色的 狐狸\n" + "跳过\n" + "那只 懒狗" puts hello_world |
除了手动声明换行符之外,我们还可以使用以下结构:
|
1 2 3 4 5 6 |
hello_world = "这只 敏捷的 棕色的 狐狸 跳过 那只 懒狗" puts hello_world |
在这种方法中,字符串保留了所有空格。然而,这会使输出变得混乱。删除多余的空格来修复它:
|
1 2 3 4 5 |
hello_world = "这只 敏捷的 棕色的 狐狸 跳过 那只 懒狗" |
虽然空格问题得到了解决,但它降低了代码的可读性。我们可以通过实现一个 heredoc(多行字符串字面量的术语)。更新后的代码如下所示:
|
1 2 3 4 5 6 7 8 |
hello_world = <<-END 这只 敏捷的 棕色的 狐狸 跳过 那只 懒 狗 END puts hello_world |
从 Ruby v2.3 及以上版本开始,还有另一个可用功能,名为 波浪线 heredoc 语法。它会删除字符串中的前导空格。要表示一个 波浪线 heredoc,请将连字符( -)替换为波浪号( ~):
|
1 2 3 4 5 6 7 8 |
hello_world = <<~END 这 敏捷的 棕色的 狐狸 跳过 越过 这 懒惰的 狗 END puts hello_world |
步骤 8 – 重复字符串
在某些情况下,可能需要将一个字符串重复多次。Ruby 允许以各种方式重复字符串。
其中一种技术是使用 * 运算符。通常,在处理数字时,它被用作乘法运算符。然而,在处理字符串时,它变成了 字符串复制运算符,根据需要将单个字符串重复多次。重复次数必须是整数。
在以下示例中,文本 Boris 将被重复 5 次:
|
1 |
print "Boris" * 5 + "\n" |
利用这个特性,我们可以制作一些酷炫的 ASCII 艺术。请看以下示例:
|
1 2 3 |
puts "=" * 15 puts "| hello world |" puts "=" * 15 |
结语
在编程中,字符串是至关重要的。本指南演示了如何在 Ruby 中处理字符串。我们学习了如何创建字符串并执行各种操作,如拼接、处理换行符、引号等。通过使用字符串插值,我们还学习了如何更好地将变量值整合到字符串中。使用字符串复制运算符,我们还可以将单个字符串重复多次。
虽然 Ruby 本身是一门优秀的编程语言,但它经常与 Rails 框架结合使用。Ruby on Rails 是一个开源的 Web 应用程序框架。了解更多关于安装 Ubuntu 上的 Ruby on Rails 的信息。然而,Ruby 也可以与其他应用程序协同工作,例如 MySQL 和 PostgreSQL.
祝您编程愉快!












































评论
暂无评论。发表第一条评论吧。