`

娃娃鸭学Ruby-11、文本

阅读更多
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

分享到:
评论

相关推荐

    ruby-debug-ide

    《深入理解Ruby调试工具:ruby-debug-ide》 在Ruby编程世界中,高效的问题排查与代码调试是开发者必备的技能之一。ruby-debug-ide正是这样一个强大的调试接口,它为Ruby开发环境提供了集成的调试支持,使得开发者...

    src-oepkgs/ruby-ruby2ruby

    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-1.8.7-p302.tar.gz

    Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。...该版本为ruby-1.8.7-p302

    hw-ruby-intro.zip_SaaS软件工程_hw-ruby-intro_ruby _ruby 中文_saas

    在本压缩包“hw-ruby-intro.zip”中,我们主要关注的是RUBY语言在SaaS(Software as a Service)软件工程中的应用。这个压缩包包含了一份名为“hw-ruby-intro”的作业代码,它是针对高级软件工程课程的,特别强调了...

    ruby-oracle相关的数据库操作的gems包

    标题提到的"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-irb-1.8.7.352-13.el6.x86_64.rpm

    ruby-runtime手动插件.zip

    该压缩包文件 "ruby-runtime.hpi" 是 Jenkins 插件的标准格式,扩展名为 ".hpi"(Jenkins Plugin Installable Unit)。HPI 文件可以直接上传到 Jenkins 管理界面的“管理插件”部分进行安装。安装完成后,你可以在 ...

    ruby-2.5.3-x64 下载

    标题中的"ruby-2.5.3-x64"指的是Ruby语言的特定版本,2.5.3,这是一个64位的构建。Ruby的版本迭代频繁,每个新版本通常会包含性能优化、新的特性和错误修复。2.5.3是2018年发布的一个稳定版本,它带来了诸如改进的...

    Ruby-GNOME2.zip

    Ruby-GNOME2提供GNOME 2.0开发环境的Ruby绑定,目前在活跃更新中。如果你喜欢GTK的界面,你一定会喜欢Ruby-GNOME2。GTK目前提供Linux、 Windows等多个平台的运行库,也就是说使用GTK开发的应用程序可以在多个平台下...

    Ruby-formatadorSTDOUT文本格式化

    总的来说,`Ruby-formatadorSTDOUT文本格式化`是一个强大的工具,可以帮助开发者提升命令行应用的用户体验。通过其灵活的格式化能力和丰富的颜色选项,可以使控制台输出变得更加专业且易于理解。无论是在调试、日志...

    ruby-2.4.3.tar.gz

    在这个场景中,"ruby-2.4.3.tar.gz"是一个压缩包,其中包含了Ruby 2.4.3的源代码。这个版本是在2017年发布的,相比CentOS 6.x默认的Ruby版本,它提供了更多的改进和新特性。Ruby 2.4系列引入了性能优化、新的语法糖...

    Ruby-RubyJMeter一个基于Ruby的DSL用于构建JMeter测试计划

    Ruby-JMeter是一个强大的工具,它将Ruby编程语言与Apache JMeter测试框架相结合,为性能测试和负载测试提供了灵活且易于使用的领域特定语言(DSL)。这个工具使得测试人员和开发者能够用Ruby编写JMeter测试计划,...

    ruby-1.9.3-p547.tar.gz

    在本压缩包"ruby-1.9.3-p547.tar.gz"中,包含的是Ruby语言的一个特定版本——1.9.3-p547。 Ruby 1.9.3是Ruby的一个重要版本,发布于2012年,它带来了许多性能提升和新特性。这个版本对Ruby的语法进行了改进,包括更...

    ruby-debug-1.87.rar

    《Ruby调试工具:ruby-debug-1.87详解》 Ruby是一种动态、开源的编程语言,以其简洁的语法和强大的元编程能力深受开发者喜爱。在开发过程中,调试是必不可少的一环,而`ruby-debug-1.87`就是Ruby社区中广泛使用的...

    ruby-2.4.5.tar.gz

    解压`ruby-2.4.5.tar.gz`后,你会得到一个名为`ruby-2.4.5`的目录,其中包含了Ruby源代码的所有文件和子目录。这些文件可能包括但不限于: 1. `README`: 提供关于该版本的基本信息和安装指南。 2. `INSTALL`: 包含...

    ruby-1.9.2-p290.tar.gz

    标题中的"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

    mingw32-ruby-1.9.1-wxruby-2.0.1-setup.exe

    ruby-2.5.8.tar.gz

    - 解压`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、rubygems-2.6.2.zip、redis-3.2.2.gem

    `ruby-2.2.4.tar.gz`需要先解压,然后通过`configure`脚本和`make`命令编译安装。`rubygems-2.6.2.zip`解压后执行安装脚本来安装。Redis则通过`gem install redis-3.2.2.gem`来安装其客户端库。配置Redis服务,用户...

    ruby-2.6.5.tar.gz

    在终端中输入`tar -zxvf ruby-2.6.5.tar.gz`,这会创建一个名为`ruby-2.6.5`的目录,包含所有源代码。 2. **进入目录**:使用`cd`命令进入新解压的目录,如`cd ruby-2.6.5`。 3. **配置**:运行`./configure`脚本...

Global site tag (gtag.js) - Google Analytics