Ruby 编程/字符串
像 Python、Java 和 .NET Framework 一样,Ruby 也有一个内置的字符串类。
创建字符串的一种方法是在 Ruby 程序中使用单引号或双引号来创建所谓的字符串字面量。我们已经使用过我们的 "hello world" 程序。我们对代码的快速更新展示了单引号和双引号的使用。
puts 'Hello world'
puts "Hello world"
能够使用单引号或双引号类似于 Perl,但与 C 和 Java 等语言不同,后者使用双引号表示字符串字面量,使用单引号表示单个字符。
那么 Ruby 中单引号和双引号有什么区别呢?在上面的代码中,没有区别。但是,请考虑以下代码
puts "Betty's pie shop"
puts 'Betty\'s pie shop'
因为 "Betty's
" 包含一个撇号,它与单引号是同一个字符,所以在第二行,我们需要使用反斜杠来转义撇号,以便 Ruby 理解撇号是在字符串字面量中,而不是标记字符串字面量的结束。反斜杠后跟单引号称为 转义序列。
单引号只支持两种转义序列。
- \' – 单引号
- \\ – 单反斜杠
除了这两个转义序列之外,单引号之间的所有其他内容都按字面意思处理。
双引号允许比单引号更多的转义序列。它们还允许您在字符串字面量中嵌入变量或 Ruby 代码 - 这通常称为 插值。
puts "Enter name"
name = gets.chomp
puts "Your name is #{name}"
以下是可以在双引号中出现的更常见的转义序列。
尝试一下这个示例代码,以更好地理解转义序列。
puts "Hello\t\tworld"
puts "Hello\b\b\b\b\bGoodbye world"
puts "Hello\rStart over world"
puts "1. Hello\n2. World"
结果
$ double-quotes.rb Hello world Goodbye world Start over world 1. Hello 2. World
注意,换行符转义序列(在代码的最后一行)只是开始新的一行。
响铃字符,由转义代码 \a
生成,被认为是 控制字符。它不代表字母、标点符号或任何其他书面符号。相反,它指示 终端模拟器(在 Microsoft Windows 上称为 控制台)“提醒”用户。终端模拟器如何响应的具体细节取决于终端模拟器,尽管 蜂鸣声是相当标准的。有些终端模拟器会短暂闪烁。
运行以下 Ruby 代码,查看您的终端模拟器如何处理响铃字符。
puts "\aHello world\a"
我们一直在使用 puts
函数来打印文本。每当 puts
打印文本时,它都会在文本后自动打印一个换行符。例如,尝试以下代码。
puts "Say", "hello", "to", "the", "world"
结果
$ hello-world.rb Say hello to the world
相反,Ruby 的 print
函数只在您指定一个时才打印一个换行符。例如,尝试以下代码。我们在 print
的参数列表末尾包含一个换行符,以便 shell 提示符出现在文本之后的新行上。
print "Say", "hello", "to", "the", "world", "\n"
结果
$ hello-world.rb Sayhellototheworld
以下代码产生相同的输出,所有单词都连在一起。
print "Say"
print "hello"
print "to"
print "the"
print "world"
print "\n"