📜  Ruby字符串

📅  最后修改于: 2021-01-08 13:10:32             🧑  作者: Mango

红宝石弦

Ruby字符串对象保存并操纵一个字节的任意序列,通常表示字符。它们是使用String :: new或字面量的。

行情

Ruby字符串字面量包含在单引号和双引号中。

例:

#!/usr/bin/ruby 

puts 'Hello everyone' 
puts "Hello everyone"

输出:

访问字符串元素

您可以使用方括号[]来访问Ruby字符串元素的不同部分。在方括号内写下索引或字符串。

例:

#!/usr/bin/ruby 

msg = "This tutorial is from JavaTpoint." 

puts msg["JavaTpoint"] 
puts msg["tutorial"] 

puts msg[0] 

puts msg[0, 2] 
puts msg[0..19] 
puts msg[0, msg.length] 
puts msg[-3]

输出:

多行字符串

用Ruby语言编写多行字符串非常简单。我们将展示三种print多行字符串。

  • 字符串可以用双引号引起来。
  • 使用%字符,字符串包含在/ 字符。
  • 在Heredoc语法中,我们使用<<,而字符串包含在单词STRING中。

例:

puts " 
A 
AB 
ABC 
ABCD" 

puts %/ 
A 
AB 
ABC 
ABCD/ 

puts <

输出:

可变插值

Ruby变量插值用字符串字面量内部的值替换变量。变量名称放在字符串字面量的#{和}个字符之间。

例:

#!/usr/bin/ruby 

country = "India" 
capital = "New Delhi" 

puts "#{capital} is the capital of #{country}."

输出:

连接字符串

Ruby串联字符串意味着从多个字符串创建一个字符串。你可以加入多个字符串通过连接他们形成一个字符串。

有四种方法可以将Ruby字符串连接为单个字符串:

  • 在字符串之间使用加号。
  • 在字符串之间使用单个空格。
  • 在字符串之间使用<<登录。
  • 在字符串之间使用concat方法。

例:

#!/usr/bin/ruby 

string = "This is Ruby Tutorial" + " from JavaTpoint." + " Wish you all good luck." 
puts string 

string = "This is Ruby Tutorial" " from JavaTpoint." " Wish you all good luck." 
puts string 

string = "This is Ruby Tutorial" << " from JavaTpoint." << " Wish you all good luck." 
puts string 

string = "This is Ruby Tutorial".concat(" from JavaTpoint.").concat(" Wish you all good luck.") 
puts string

输出:

冻结字符串

在大多数编程语言中,字符串是不可变的。这意味着无法修改现有字符串,只能从中创建新字符串。

在Ruby中,默认情况下字符串不是不可变的。为了使它们不可变,可以使用冻结方法。

例:

#!/usr/bin/ruby 

str = "Original string" 
str << " is modified " 
str << "is again modified" 

puts str 

str.freeze 

#str << "And here modification will be failed after using freeze method"

输出:

在上面的输出中,我们通过使用Frozen方法使字符串不可变。最后一行被注释,因为不能再修改任何字符串。

通过取消注释最后一行,我们将得到一个错误,如下面的输出所示。

输出:

比较字符串

Ruby字符串可以与三个运算符进行比较:

  • 使用==运算符:返回true或false
  • 用eql?运算子:传回true或false
  • 使用casecmp方法:如果匹配则返回0,如果不匹配则返回1

例:

#!/usr/bin/ruby 

puts "abc" == "abc" 
puts "as ab" == "ab ab" 
puts "23" == "32" 

puts "ttt".eql? "ttt" 
puts "12".eql? "12" 

puts "Java".casecmp "Java" 
puts "Java".casecmp "java" 
puts "Java".casecmp "ja"

输出: