在字符串中做替换操作
=========================================
我们已经知道sub和gsub的基本用法了,我们来看它们的更加高级的用法。同时还有这两个方法
的in-place方法sub!和gsub!
s1 = "spam, spam, and eggs"
s2 = s1.sub(/spam/,"bacon") # "bacon, spam, and eggs"
s3 = s2.sub(/(\w+), (\w+),/,'\2, \1,') # "spam, bacon, and eggs"
s4 = "Don't forget the spam."
s5 = s4.sub(/spam/) { |m| m.reverse } # "Don't forget the maps."
s4.sub!(/spam/) { |m| m.reverse } # s4 is now "Don't forget the maps."
如上面的例子中所示,\1,\2等符号可以用来把匹配到的结果作为替换的内容来使用
全局变量$&中存放着最后一次匹配到的内容。
搜索字符串
===========================================
index方法用来查找给出的子串,字符或正则表达式在字符串中的起始位置。如果没找到,则返
回nil
str = "Albert Einstein"
pos1 = str.index(?E) # 7
pos2 = str.index("bert") # 2
pos3 = str.index(/in/) # 8
pos4 = str.index(?W) # nil
pos5 = str.index("bart") # nil
pos6 = str.index(/wein/) # nil
rindex方法将会从字符串的最右边开始查找:
str = "Albert Einstein"
pos1 = str.rindex(?E) # 7
pos2 = str.rindex("bert") # 2
pos3 = str.rindex(/in/) # 13 (finds rightmost match)
pos4 = str.rindex(?W) # nil
pos5 = str.rindex("bart") # nil
pos6 = str.rindex(/wein/) # nil
include?方法用来判断字符串中是否包含所给出的内容:
str1 = "mathematics"
flag1 = str1.include? ?e # true
flag2 = str1.include? "math" # true
str2 = "Daylight Saving Time"
flag3 = str2.include? ?s # false
flag4 = str2.include? "Savings" # false
scan方法则会扫描整个字符串,把匹配结果收集起来:
str1 = "abracadabra"
sub1 = str1.scan(/a./) #["ab","ac","ad","ab"]
str2 = "Acapulco, Mexico"
sub2 = str2.scan(/(.)(c.)/) #[["A","ca"],["l","co"],["i","co"]]
如果使用了block,则匹配结果会被传到block中:
str3 = "Kobayashi"
str3.scan(/[^aeiou]+[aeiou]/) do |x|
print "Syllable: #{ x}\n"
end
结果是:
Syllable: Ko
Syllable: ba
Syllable: ya
Syllable: shi
在字符和ASCII之间相互转换
============================================
在ruby中,字符本身就是整数:
str = "Martin"
print str[0] #77
如果一个整数直接被追加到字符串中,则它会被转换成字符:
str2 = str << 111 #"Martino"
length和size方法的作用是一样的,都是用来计算字符串的长度:
str1 = "Carl"
x = str1.length # 4
str2 = "Doyle"
x = str2.size # 5
处理一行的字符串
======================================
Ruby一个字符串中可以包含很多行。举个例子,我们可以把一个很小的文件(其中有多行数据)读
取到内存中,存放在一个字符串中。字符串默认的each方法可以处理这些行。
str = "Once upon\na time...\nThe End\n"
num = 0
str.each do |line|
num += 1
print "Line #{ num} : #{ line}"
end
输出结果为:
Line 1 : Once upon
Line 2 : a time...
Line 3 : The End
处理字节
=========================================
字符串的each_byte迭代方法用来逐个处理字符串的每个字节
str = "ABC"
str.each_byte do |char|
print char, " "
end
结果:
65 66 67
向字符串追加内容"<<操作符"
============================================
str = "A"
str << [1,2,3].to_s << " " << (3.14).to_s # 结果:A123 3.14
如果0~255范围的数字追加到字符串中,则它会被转换成字符:
str = "Marlow"
str << 101 << ", Christopher" # 结果: Marlowe, Christopher
删除尾部的换行符和其他字符
==============================================
使用chop方法来删除尾部字符:
str = gets.chop # Read string, remove newline
s2 = "Some string\n" # "Some string" (no newline)
s3 = s2.chop! # s2 is now "Some string" also
s4 = "Other string\r\n"
s4.chop! # "Other string" (again no newline)
记得,chop和chop!在字符串尾部没有换行符号的情况下,会删除最后一个非换行字符:
str = "ABC"
str.chop # AB
如果不想要上面的效果,请用chomp:
str = "ABC"
str.chomp # ABC
str = "xyz\n"
str.chomp # xyz
chomp方法可以带一个参数,这样的作用是可以用来删除字符串尾部和参数匹配的内容:
str = "abcxyz"
str.chomp("xyz") # abc
str1 = "abcxyz"
str1.chomp("D") # abcxyz
分享到:
相关推荐
《The Ruby Way 2nd Edition》是一本深入探讨Ruby编程语言的经典著作,旨在帮助读者全面理解和掌握Ruby的精髓。这本书的第二版在2006年出版,由Addison-Wesley出版,作者通过深入浅出的方式,揭示了Ruby语言的强大...
《The Ruby Way》第二版是Addison-Wesley出版社在2006年10月出版的一本关于Ruby编程语言的权威指南。这本书深入浅出地介绍了Ruby语言的核心特性和高级用法,旨在帮助读者全面理解和掌握Ruby的精髓。通过阅读这本书,...
《The Ruby Way》第二版是Addison-Wesley出版社在2006年推出的一本深入浅出的Ruby编程语言教程。这本书专为初学者设计,旨在帮助读者快速掌握Ruby语言的基础和高级特性,从而轻松入门Ruby编程。Ruby是一种动态、开放...
《The Ruby Way》是由Hal Fulton编写的关于Ruby编程语言的经典著作,该书的第二版出版于2006年10月,由Addison Wesley Professional出版社发行。本书共包含888页的内容,提供了丰富的示例来帮助读者理解和掌握Ruby...
1. **Ruby基础**:书中会介绍Ruby的基本语法,包括变量、常量、数据类型(如字符串、数字、数组、哈希)、控制结构(如条件语句、循环)以及函数和方法的使用。 2. **面向对象编程**:Ruby是纯面向对象的语言,书中...
**模式字符串**: 可以通过指定第二个参数来设置文件的打开模式。常见的模式有: - `"r"`:只读模式,默认模式。 - `"w"`:写入模式,会清空文件内容或创建新文件。 - `"a"`:追加模式,在文件末尾添加内容。 - `"r+...
2. **面向对象**:Ruby的一切都是对象,包括基本的数据类型如数字和字符串。这种设计使得Ruby具备了强大的面向对象编程能力,支持类、模块、继承、多态等特性。 3. **动态类型**:作为动态类型语言,Ruby中的变量...
学习Ruby时,需要掌握关键字、符号、字符串、数组、哈希等数据类型,以及如何进行异常处理和文件操作。 接着是“ruby中文文档”,这通常包括官方文档的中文版,涵盖了Ruby的各个方面,如标准库、API、语言规范等。...
《Ruby之路》是关于Ruby编程语言的一本详细指南,作者旨在揭示“Ruby之道”,即如何在Ruby编程中运用有效的解决方案和技术。第二版于2006年10月由Addison-Wesley出版,它全面地涵盖了Ruby语言的核心概念、语法特性...
在IT行业中,Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而受到开发者喜爱。Rails是基于Ruby构建的一款开源Web应用框架,它遵循MVC(模型-视图-控制器)架构模式,极大地...
在压缩包中,"ror_v0.2.pdf"可能是一本关于Ruby on Rails的教程或指南,涵盖了从基础到进阶的RoR开发内容,包括路由设置、数据库迁移、控制器行为、模型关系、测试等。读者可以通过阅读这本书来学习如何创建动态网页...
### 关于《The Rails 4 Way》一书的知识点概览 #### 书籍基本信息 - **作者**: Obie Fernandez、Kevin Faustino 和 Vitaly Kushner。 - **出版时间**: 2014年6月3日。 - **出版社**: Leanpub。 - **标签**: Rails。...
数组、字符串、正则表达式和迭代器、代码块、闭包是Ruby语言在实际编程中不可或缺的部分,掌握它们对于高效编程是必不可少的。 最后,元编程部分将探讨Ruby语言中动态添加方法和属性,以及操作类和模块的能力,这是...
Ruby是一种面向对象的、动态类型的编程语言,由日本的松本行弘于1995年设计并开发。它的设计理念是让编程变得简单而优雅,强调代码的可读性和简洁性。Ruby在很多方面与Perl、Python和Smalltalk有相似之处,但其语法...
- **Python 3**是Python的最新版本,与Python 2相比,它在字符串处理、Unicode支持以及一些语法方面进行了改进。 #### 知识点二:《Learn Python 3 the Hard Way》书籍概述 - 本书由**Zed A. Shaw**编写,是一本...