宽容他人,放过自己。

ruby的学习(5)

Posted on By anchoriteFili

Ruby 字符串(String)


Ruby 字符串分为单引号字符串(’)和双引号字符串(”),区别在于双引号字符串能支持更多的转义字符。

Ruby 中还支持一种采用 %q 和 %Q 来引导的字符串变量,%q 使用的是单引号引用规则,而%Q是双引号引用规则,后面再接一个 (! [{ 等等的开始界定符和与 }]) 等等的末尾界定符。 跟在 q 或 Q 后面的字符是分界符,分界符可以是任意一个非字母数字的单字节字符,如:[,{,(,<,!等,字符串会一直读取到发现相匹配的结束符为止。

desc1 = %Q{Ruby 的字符串可以使用 '' 和 ""。 }
desc2 = %q|Ruby 的字符串可以使用 '' 和 ""。 |

puts desc1
puts desc2

字符串内建方法


我们需要有一个 String 对象的实例来调用 String 方法。下面是创建 String 对象实例的方法。

myStr = String.new("THIS IS TEST")
foo = myStr.downcase

puts "#{foo}"

# 结果:this is test

公共字符串方法


方法 描述
str % arg 使用格式规范格式化字符串。如果 arg 包含一个以上的替代,那么 arg 必须是一个数组。如需了解更多格式规范的信息,请查看“内核模块”下的sprintf
str * integer 返回一个包含 integer 个 str 的新的字符串。换句话说,str 被重复了 integer 次。
str + other_str 链接 other_str 到 str
str « obj 链接一个对象到字符串。如果对象是范围为 0.255 之间的固定数字 Fixnum, 则它会被转换为一个字符。把它与 concat 进行比较。
str <=> obj 把 str 与 other_str 进行比较,返回 -1(小于)、0(等于)或 1(大于)。比较是区分大小的。
str == obj 检查 str 和 obj 的相等性。如果 obj 不是字符串,则返回 false,如果 str <=> obj,则返回 true,返回0.
str =~ obj 根据正则表达式模式 obj 匹配 str。返回匹配开始的位置,否则返回 false。
str[position] # 注意返回的是ASCII码而不是字符。
str[start, length]
str[start..end]
str[start…end]
使用索引截取子串
str.capitalize! 将字符串转换为大写字母显示。
str.center 居中字符串
str.chomp! 与 chomp 相同,但是 str 会发生变回并返回。
str.chop 移除 str 中的最后一个字符。
str.chop! 与 chop 相同,但是 str 会发生变化并返回。
str.concat(other_str) 链接 other_str 到 str。
str.count(str, …) 给一个或多个字符集计数。如果有多个字符集,则给这些集合的交集计数。
str.crypt(other_str, …) 对 str 应用单项加密哈希。参数是两个字符长的字符串,每个字符的范围,每个字符的范围为a.z、A.Z、0.9、.或/。
str.delete(other_str, …) 返回 str 的副本,参数交集中的所有字符会被删除。
str.deleter!(other_str, …) 与 delete 相同,但是 str 会发生变化并返回。
str.downcase 返回 str 的副本,所有的大写字母会被替换为小写字母。
str.downcase! 与 downcase 相同,但是 str 会发生变化并返回。
str.dump 返回 str 的版本,所有的非打印字符被替换为 \nnn 符号,所有的特殊字符被转义。
str.each(separator=$/){ |substr| block } 使用参数作为记录分隔符(默认是 $/)分隔 str, 传递每个字符串给被提供的块。
str.each_byte{ |fixnum| block } 传递 str 的每个字节给 block,以字节的十进制表示法返回每个字节。
str.each_line(separator=$/) { |substr| block } 使用参数作为记录分隔符(默认是 $/)分隔 str,传递每个子字符串给被提供的 block。
str.empty? 如果 str 为空(即长度为0),则返回 true。
str.eql?(other) 如果两个字符串有相同的长度和内容,则这两个字符串相等。
str.gsub(pattern, replacement)
[or]
str.gsub(pattern){ |match| block }
返回 str 的副本,pattern 的所有出现都替换为 replacement 或 block 的值。pattern 通常是一个正则表达式 Regexp; 如果是一个字符串 String, 则没有正则表达式元字符被解释(即,/\d/将匹配一个数字,但 ‘\d’ 将匹配一个反斜杠后跟一个’d’)。
str.hash 返回一个基于字符串长度和内容的哈希。
str.hex 把 str 的前导字符当做十六进制数字的字符串(一个可选的符号和一个可选的0x),并返回相对应的数字。如果错误则返回零。

Ruby 数组(Array)


数组的索引从零开始,索引为 -1 表示数组的最后一个元素,-2 表示数组中的倒数第二个元素,以此类推。

# 可以给数组中的每个元素赋值。
names = Array.new(20)
puts names.size     # 返回 20
puts names.length   # 返回 20
# 可以给数组中的每个元素赋值

names = Array.new(4, "mac")
puts "#{names}"

# 结果:["mac", "mac", "mac", "mac"]
# 你也可以使用带有 new 的块,每个元素使用块中的计算结果来填充:
nums = Array.new(10) { |e| e = e * 2 }
puts "#{nums}"

# 结果:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

数组内建方法


digits = Array(0..9)
num = digits.at(6)
puts "#{num}"

# 结果:6

公共的数组方法


方法 描述
array & other_array 返回一个新的数组,包含两个数组中共同的元素,没有重复。
array * int[or]array * str 返回一个新的数组,新数组通过链接 self 的 int 副本创建的。带有 String 参数时,相当于 self.join(str).
array + other_array 返回一个新的数组,新数组通过谅解两个数组产生第三个数组创建的。
array - other_array 返回一个新的数组,新数组是从初始数组中移除了在 other_array 中出现的项的副本。
array|other_array 通过把 other_array 加入 array 中,移除重复项,返回一个新的数组。
array « obj 把给定的对象附加到数组的末尾。该表达式返回数组本身,所以几个附加可以连在一起。
array <=> other_array 如果数组小于、等于或大于 other_array,则返回一个整数(-1、0或+1)。
array == other_array 如果两个数组包含相同的元素个数,且每个元素与另一个中相对应的元素相等,那么这两个数组相等。
array.abbrev(pattern = nil) 为 self 中的字符串计算明确的缩写集合。如果传递一个模式或一个字符串,只考虑当前字符串匹配模式或者以该字符串开始的情况。