Ruby使用String类的对象表示文本。
字符串是可变的对象
定义了 提取字符串、插入和删除文本,搜索及替换等操作
1、字符串字面量
由单引号引用的字符串字面量
被单引号所引用的字符串是形式最简单的字符串字面量,单引号之间的文本就是字符串的值。
'This is a simple Ruby string literal'
要用到单引号('),前面放置一反斜线,反斜线转义再加一个反斜线就可以了。
'Won\'t you read O\'Reilly \'s book?'
'This string literal ends with a single backslash:\\'
'This is a backslash-quote:\\\''
'Two backslashed:\\\\'
后面不是需要反斜线的,前面出现则就字面量,如以下相等:
'a\b'=='a\\b'
单引号引用的字符串可以跨越多行,得到的字符串字面量包含换行字符。
'This is a long string literal \
that includes a backslash and a new line'
希望不引入换行符
message ='These three literals are '\
'concatenated into one by the interpreter.'\
'The resulting string contains no newlines.'
由双引号引用的字符串字面量
支持更多转义序列,如\n \t \"
"\t\"This quote begins with a tab and ends with a newline\"\n"
"\\" # A single backslash
Ruby1.9 \u这个转义序列能将任意的Unicode字符嵌入到双引号引用的字符串中。
强大功能,
双引号引用的字符串包含Ruby表达式。
"360 degrees=#{2*Math::PI} radians" # "360 degrees=6.28318530717959 radians"
当插入的表达式只是一个对于全局、实例或类变量的引用时,花括号可以省略:
$salutation='hello'
"#$salutation world" # hello world
当#后面是{、$或@字符时,#要加已转义
"My phone #: 555-1324"
"Use \#{ to interpolate expressions"
C程序中的 printf springf
springtf("pi is about %.4f",Math::PI) # returns "pi is about 3.1416"
Ruby自己风格:
"pi is about %.4f" % Math::PI # pi is about 3.1416
双引号引用可以跨多行,\可以去年终结符否则终结符包括在字面量中。
更好的方式,将终结符加在字面量中
"This string has three lines.\r\n"\
"It is written as three adjacent literals\r\n"\
"separated by escaped new lines\r\n"
转义符 含义
\x 除非是终结符否则\x==x
\a Ascii码7 控制台铃声等价于\C-g或\007
\b 退格键 Ascii 8
\e Esc字符ascii 27
\f 换页符 ascii 12 \C-l \014
\n 换行符 Ascii 10
\r 回车符 13
\s 空格符 32
\t水平制表符 ascii 9
\unnnn Unicode 码点,n为十六进制,不能省略开头的0
\u{十六进制数字}
\v 垂直制表符Ascii 11
\ nnn 000-377八进制数
\nn \0nn
\ n \00n
\xnn nn 00-FF
\xn \x0n
\cx \C-x
\C-x
\M-x
\eol 行终止符前面的反斜线。
Unicode转义序列
\unnnn
"\u00D7" #=>"x"
字母可以大小写
"\u20ac" #=>" "
\u{}
0-10FFFF
"\u{A5}" #=>"¥" "\u00A5"
"\u{3C0}" #=> "\u03C0"
"\u{10ffff}" #=>最大的Unicode
可以放入多个码点在{}中用空格或tab字符进行分隔
money="\u{20AC A3 A5}" #=> " £$"
空格不会放在字符串中,可以加入码点20
money="\u{20Ac 20 A3 20 A5}" #=>" £ $"
2011-3-31 20:31 danny
字符串字面量的分界符
%q开头的字符串字面量 单引号引用字符串的规则
%Q(或%)开头的字符串字面量 双引号引用字符串的规则
q或Q后的第一个字符为起始分界符,下一个为终止分界符。如果起始分界符为(,[,{或<,终止分界符为),],}或>
%q(Don't worry about escaping ' characters!)
%Q|"How are you?",he said|
%-This string literal ends with a newline \n-
对边界进行转义
%q_This string literal contans \_underscores\__
%Q!Just user a _different_ delimiter\!!
成对出现的分界符,只要成对出现可以不用转义
%<<book><title>Ruby in a Nutshell</title></book>>
%((1+(2*3)=#{(1+(2*3))})
%(A mismatched paren \( must be escaped)
Here document
以<<或<<-开头,后面紧跟(避免和左移位操作混淆,不允许有空格)一个用于指定结尾分界符的标识符或字符串,从下一行开始直到该分界符单独出现在一行为止,其间的文本都被作为该字符串字面量的内容。
document=<<HERE
This is a string literal.
It has two lines and abruptly ends...
HERE
更复杂功能
greeting=<<HERE + <<THERE +"World"
Hello
HERE
There
THERE
注意
Here document的结尾分界符必须单独出现在一行,后面不能接注释。
document=<<-"# # #"
<html><head><title>#{title}</title></head>
<body>
<h1>#{title}</h1>
#{body}
</body>
</html>
2011-4-1 19:59
反引号所引用的命令的执行
`
该文本的值将被传递给一个特殊的名为Kernel.`的方法,该方法将该文本的值作为一个操作系统shell命令来执行,并且将该命令的输出作为字符串返回。
`ls` 同Windows下的`dir`
if windows
listcmd=`dir`
else
listcmd=`ls`
end
listing =`#{listcmd}`
listing=Keren.`(listcmd)
字符串字面量和可变性
Ruby的字符串是可变的。
Ruby解释器无法用同一个对象来表达两个相同的字符串字面量的。
每当Ruby遇见一个字符串字面量时,它都会新建一个对象。
10.times{puts "test".object_id}
应该避免在循环中使用字符串字面量。
String.new方法
通过String.new方法创建新字符串。
2011-4-1 20:12
字符串是可变的对象
定义了 提取字符串、插入和删除文本,搜索及替换等操作
1、字符串字面量
由单引号引用的字符串字面量
被单引号所引用的字符串是形式最简单的字符串字面量,单引号之间的文本就是字符串的值。
'This is a simple Ruby string literal'
要用到单引号('),前面放置一反斜线,反斜线转义再加一个反斜线就可以了。
'Won\'t you read O\'Reilly \'s book?'
'This string literal ends with a single backslash:\\'
'This is a backslash-quote:\\\''
'Two backslashed:\\\\'
后面不是需要反斜线的,前面出现则就字面量,如以下相等:
'a\b'=='a\\b'
单引号引用的字符串可以跨越多行,得到的字符串字面量包含换行字符。
'This is a long string literal \
that includes a backslash and a new line'
希望不引入换行符
message ='These three literals are '\
'concatenated into one by the interpreter.'\
'The resulting string contains no newlines.'
由双引号引用的字符串字面量
支持更多转义序列,如\n \t \"
"\t\"This quote begins with a tab and ends with a newline\"\n"
"\\" # A single backslash
Ruby1.9 \u这个转义序列能将任意的Unicode字符嵌入到双引号引用的字符串中。
强大功能,
双引号引用的字符串包含Ruby表达式。
"360 degrees=#{2*Math::PI} radians" # "360 degrees=6.28318530717959 radians"
当插入的表达式只是一个对于全局、实例或类变量的引用时,花括号可以省略:
$salutation='hello'
"#$salutation world" # hello world
当#后面是{、$或@字符时,#要加已转义
"My phone #: 555-1324"
"Use \#{ to interpolate expressions"
C程序中的 printf springf
springtf("pi is about %.4f",Math::PI) # returns "pi is about 3.1416"
Ruby自己风格:
"pi is about %.4f" % Math::PI # pi is about 3.1416
双引号引用可以跨多行,\可以去年终结符否则终结符包括在字面量中。
更好的方式,将终结符加在字面量中
"This string has three lines.\r\n"\
"It is written as three adjacent literals\r\n"\
"separated by escaped new lines\r\n"
转义符 含义
\x 除非是终结符否则\x==x
\a Ascii码7 控制台铃声等价于\C-g或\007
\b 退格键 Ascii 8
\e Esc字符ascii 27
\f 换页符 ascii 12 \C-l \014
\n 换行符 Ascii 10
\r 回车符 13
\s 空格符 32
\t水平制表符 ascii 9
\unnnn Unicode 码点,n为十六进制,不能省略开头的0
\u{十六进制数字}
\v 垂直制表符Ascii 11
\ nnn 000-377八进制数
\nn \0nn
\ n \00n
\xnn nn 00-FF
\xn \x0n
\cx \C-x
\C-x
\M-x
\eol 行终止符前面的反斜线。
Unicode转义序列
\unnnn
"\u00D7" #=>"x"
字母可以大小写
"\u20ac" #=>" "
\u{}
0-10FFFF
"\u{A5}" #=>"¥" "\u00A5"
"\u{3C0}" #=> "\u03C0"
"\u{10ffff}" #=>最大的Unicode
可以放入多个码点在{}中用空格或tab字符进行分隔
money="\u{20AC A3 A5}" #=> " £$"
空格不会放在字符串中,可以加入码点20
money="\u{20Ac 20 A3 20 A5}" #=>" £ $"
2011-3-31 20:31 danny
字符串字面量的分界符
%q开头的字符串字面量 单引号引用字符串的规则
%Q(或%)开头的字符串字面量 双引号引用字符串的规则
q或Q后的第一个字符为起始分界符,下一个为终止分界符。如果起始分界符为(,[,{或<,终止分界符为),],}或>
%q(Don't worry about escaping ' characters!)
%Q|"How are you?",he said|
%-This string literal ends with a newline \n-
对边界进行转义
%q_This string literal contans \_underscores\__
%Q!Just user a _different_ delimiter\!!
成对出现的分界符,只要成对出现可以不用转义
%<<book><title>Ruby in a Nutshell</title></book>>
%((1+(2*3)=#{(1+(2*3))})
%(A mismatched paren \( must be escaped)
Here document
以<<或<<-开头,后面紧跟(避免和左移位操作混淆,不允许有空格)一个用于指定结尾分界符的标识符或字符串,从下一行开始直到该分界符单独出现在一行为止,其间的文本都被作为该字符串字面量的内容。
document=<<HERE
This is a string literal.
It has two lines and abruptly ends...
HERE
更复杂功能
greeting=<<HERE + <<THERE +"World"
Hello
HERE
There
THERE
注意
Here document的结尾分界符必须单独出现在一行,后面不能接注释。
document=<<-"# # #"
<html><head><title>#{title}</title></head>
<body>
<h1>#{title}</h1>
#{body}
</body>
</html>
2011-4-1 19:59
反引号所引用的命令的执行
`
该文本的值将被传递给一个特殊的名为Kernel.`的方法,该方法将该文本的值作为一个操作系统shell命令来执行,并且将该命令的输出作为字符串返回。
`ls` 同Windows下的`dir`
if windows
listcmd=`dir`
else
listcmd=`ls`
end
listing =`#{listcmd}`
listing=Keren.`(listcmd)
字符串字面量和可变性
Ruby的字符串是可变的。
Ruby解释器无法用同一个对象来表达两个相同的字符串字面量的。
每当Ruby遇见一个字符串字面量时,它都会新建一个对象。
10.times{puts "test".object_id}
应该避免在循环中使用字符串字面量。
String.new方法
通过String.new方法创建新字符串。
2011-4-1 20:12
发表评论
-
39、代码块的语法
2011-05-30 12:26 728代码块的语法 1.upto(10) {|x| puts x} ... -
38、迭代和并发修改
2011-05-29 18:00 628迭代和并发修改 Ruby的核心集合类都是直接对当前的对象集合 ... -
37、外部迭代器
2011-05-28 11:56 523外部迭代器 iterator=9.downto(1) be ... -
娃娃鸭学Ruby-36、枚举器
2011-05-26 13:38 902枚举器 枚举器是类Enumeralbe::Enumerato ... -
娃娃鸭学Ruby-35、编写自定义的迭代器
2011-05-06 21:28 672自定义的迭代器 可调用一个与方法调用相关联的代码块 def ... -
娃娃鸭学Ruby-34、可枚举的对象
2011-04-26 22:18 790可枚举的对象 Array、Hash、Range及许多其他类都 ... -
娃娃鸭学Ruby-33、迭代器
2011-04-26 09:39 505虽然可用while,until和for循环 但还是更倾向于用迭 ... -
娃娃鸭学Ruby-32、for/in循环
2011-04-25 09:14 1007For/in循环 for或for/in循环可对一个枚举对象( ... -
娃娃鸭学Ruby-31、作为修饰符的while和until
2011-04-23 22:49 654作为修饰符的while和until x=0 puts x=x ... -
娃娃鸭学Ruby-30、whie和unitl
2011-04-22 23:56 445While和until while 当某个特定条件为真 unt ... -
娃娃鸭学Ruby-29、?:操作符
2011-04-22 09:08 446?:操作符 def how_many_messages(n) ... -
娃娃鸭学Ruby-28、Case
2011-04-21 22:08 544Case name= case wher ... -
娃娃鸭学Ruby-27、Unless
2011-04-21 11:04 644Unless unless,作为一个语句或修饰符,和if恰好相 ... -
娃娃鸭学Ruby-26、作为修饰符的if
2011-04-20 09:09 686作为修饰符的if 采用if的普通语句形式时,Ruby的语法要 ... -
娃娃鸭学Ruby-25、If
2011-04-19 13:17 517if if 是最简单的条件式,具有多种形式 if expres ... -
娃娃鸭学Ruby-24、操作符
2011-04-17 12:01 652操作符 在Ruby语言中, ... -
娃娃鸭学Ruby-23、赋值
2011-04-16 22:02 664赋值 一个赋值表达式可以为一个或多个左值(lvalue)指定一 ... -
娃娃鸭学Ruby-22、方法调用
2011-04-16 13:42 511方法调用 方法调用由四部分组成: 一个任意的表达式,它的 ... -
娃娃鸭学Ruby-21、常量引用
2011-04-15 22:31 632常量引用 除了值在运行期间保持不变外,常量类似于变量。 R ... -
娃娃鸭学Ruby-20、变量引用
2011-04-15 09:01 549变量引用 一个变量就是一个值的名字。 通过赋值表达式可以创建 ...
相关推荐
《深入理解Ruby调试工具:ruby-debug-ide》 在Ruby编程世界中,高效的问题排查与代码调试是开发者必备的技能之一。ruby-debug-ide正是这样一个强大的调试接口,它为Ruby开发环境提供了集成的调试支持,使得开发者...
src-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2...
Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。...该版本为ruby-1.8.7-p302
在本压缩包“hw-ruby-intro.zip”中,我们主要关注的是RUBY语言在SaaS(Software as a Service)软件工程中的应用。这个压缩包包含了一份名为“hw-ruby-intro”的作业代码,它是针对高级软件工程课程的,特别强调了...
标题提到的"ruby-oracle相关的数据库操作的gems包"是指一组用于连接和交互Oracle数据库的Ruby库。描述中指出,这些包主要基于oci8技术,oci8是Oracle公司提供的一个C接口,允许其他编程语言,如Ruby,与Oracle数据库...
ruby-irb-1.8.7.352-13.el6.x86_64.rpm ruby-irb-1.8.7.352-13.el6.x86_64.rpm
该压缩包文件 "ruby-runtime.hpi" 是 Jenkins 插件的标准格式,扩展名为 ".hpi"(Jenkins Plugin Installable Unit)。HPI 文件可以直接上传到 Jenkins 管理界面的“管理插件”部分进行安装。安装完成后,你可以在 ...
标题中的"ruby-2.5.3-x64"指的是Ruby语言的特定版本,2.5.3,这是一个64位的构建。Ruby的版本迭代频繁,每个新版本通常会包含性能优化、新的特性和错误修复。2.5.3是2018年发布的一个稳定版本,它带来了诸如改进的...
Ruby-GNOME2提供GNOME 2.0开发环境的Ruby绑定,目前在活跃更新中。如果你喜欢GTK的界面,你一定会喜欢Ruby-GNOME2。GTK目前提供Linux、 Windows等多个平台的运行库,也就是说使用GTK开发的应用程序可以在多个平台下...
总的来说,`Ruby-formatadorSTDOUT文本格式化`是一个强大的工具,可以帮助开发者提升命令行应用的用户体验。通过其灵活的格式化能力和丰富的颜色选项,可以使控制台输出变得更加专业且易于理解。无论是在调试、日志...
在这个场景中,"ruby-2.4.3.tar.gz"是一个压缩包,其中包含了Ruby 2.4.3的源代码。这个版本是在2017年发布的,相比CentOS 6.x默认的Ruby版本,它提供了更多的改进和新特性。Ruby 2.4系列引入了性能优化、新的语法糖...
Ruby-JMeter是一个强大的工具,它将Ruby编程语言与Apache JMeter测试框架相结合,为性能测试和负载测试提供了灵活且易于使用的领域特定语言(DSL)。这个工具使得测试人员和开发者能够用Ruby编写JMeter测试计划,...
在本压缩包"ruby-1.9.3-p547.tar.gz"中,包含的是Ruby语言的一个特定版本——1.9.3-p547。 Ruby 1.9.3是Ruby的一个重要版本,发布于2012年,它带来了许多性能提升和新特性。这个版本对Ruby的语法进行了改进,包括更...
《Ruby调试工具:ruby-debug-1.87详解》 Ruby是一种动态、开源的编程语言,以其简洁的语法和强大的元编程能力深受开发者喜爱。在开发过程中,调试是必不可少的一环,而`ruby-debug-1.87`就是Ruby社区中广泛使用的...
解压`ruby-2.4.5.tar.gz`后,你会得到一个名为`ruby-2.4.5`的目录,其中包含了Ruby源代码的所有文件和子目录。这些文件可能包括但不限于: 1. `README`: 提供关于该版本的基本信息和安装指南。 2. `INSTALL`: 包含...
标题中的"ruby-1.9.2-p290.tar.gz"是一个开源编程语言Ruby的特定版本的归档文件,采用流行的tar和gzip格式进行压缩。这个版本是Ruby的1.9.2分支的一个更新点,标记为p290,意味着它是该分支的第290个补丁级别。在...
mingw32-ruby-1.9.1-wxruby-2.0.1-setup.exe
- 解压`ruby-2.5.8.tar.gz`:使用`tar -zxvf ruby-2.5.8.tar.gz`命令解压。 - 编译与安装:进入解压后的目录,运行`./configure`,然后`make`和`make install`进行编译和安装。 - 验证安装:通过`ruby -v`检查...
`ruby-2.2.4.tar.gz`需要先解压,然后通过`configure`脚本和`make`命令编译安装。`rubygems-2.6.2.zip`解压后执行安装脚本来安装。Redis则通过`gem install redis-3.2.2.gem`来安装其客户端库。配置Redis服务,用户...
在终端中输入`tar -zxvf ruby-2.6.5.tar.gz`,这会创建一个名为`ruby-2.6.5`的目录,包含所有源代码。 2. **进入目录**:使用`cd`命令进入新解压的目录,如`cd ruby-2.6.5`。 3. **配置**:运行`./configure`脚本...