一.字符串创建
- 单引号包含,不支持转义符和内嵌表达式#{}(插值符)
str = 'hello world!'
- 双引号包含
str = "hello world!"
- 使用%,%Q,%q(后面跟上<>, {}, ||, []等)
str = %|\there is test!| puts str #=> here is test! str = %Q|\there is test!| puts str #=> here is test! str = %q|\there is test!| puts str #=> \there is test!
%Q相当于" "创建字符串,%q相当于' '创建字符串
使用场景:需要构造一个很长的字符串,而且包含有不少的单引号双引号 - HERE文档表示方法(特别适合表示多行的大段文字)
str = <<HERE This is a here document! 你可以在这块里输入"多行内容" HERE
这里HERE必须写在行首,否则不会认为这是一个结束标识符str = <<-HERE
This is a here document!
你可以在这块里输入"多行内容"
HERE<<-结束标识符,会忽略结束标识符前的空格,制表符;这样就不用写在行首了
支持转义符和嵌入字符串
二.基本操作
- [] 字符串元素引用
str = 'Element reference test' puts str[1] #=> l puts str[0, 7] #=> Element puts str[0..3] #=> Elem puts str[-4, 4] #=> test puts str[/n([a-z])/] #=> nt puts str[/n([a-z])/, 1] #=> t puts str['ref'] #=> ref puts str['hello'] #=> nil
上面展示了str[int], str[int, int], str[range], str[regexp], str[regexp, int], str[string]这6种方法
- []= 字符串元素赋值
str = 'Element reference test' str[0] = 'e' puts str #=> element reference test str[0, 7] = 'ABCD' puts str #=> ABCD reference test
- *, +, <<
str = 'test' puts str*3 #=> testtesttest puts str + '!' #=> test! puts str #=> test puts str << '!' #=> test! puts str #=> test! <<会改变原有对象
三.常用方法
str.length, str.size #=> 返回字符串长度 str.concat(obj) #=> 追加字符串,类似于<< str.capitalize #=> 将字符串首写字母字符大写,其余字符小写 str.delete(string) #=> 删除字符串,并将删除部分返回 str.each_byte{|int|...} #=> 对字符串中每个字节进行迭代 str.each_line{|line|...} #=> 对字符串每行进行迭代 str.strip #=> 去除字符串收尾的非可见字符(空格)
str.chop #=> 移除str中的最后一个字符
str.chomp #=> 从字符串末尾移除记录分隔符 str.downcase #=> 字符串转换为小写 str.upcase #=> 字符串转换为大写 str.include?(obj) #=> 如果包含字符串string则返回true,否则返回false str.index(string) #=> 返回string字符串在字符串中首次出现的位置;rindex方法则从后开始检索 str.reverse #=> 反转字符串 str.split(pattern, <limit>) #=> 基于分隔符pattern将字符串str分割成若干个子字符串,并以数组形式返回 str.scan(pattern) #=> 搜索出str中所有匹配pattern
str.sub(pattern, replacement) #=> 替换第一个匹配pattern的字符串为replacement
str.gsub(pattern, replacement) #=> 替换第所有匹配pattern的字符串为replacement
str.count(string, ...) #=> 统计string出现次数