`
simohayha
  • 浏览: 1403998 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

ruby way之string之一

    博客分类:
  • ruby
阅读更多
ruby本来很早就要开始看了,不过最近才真正开始看,那本宝石书还差最后1章就读完了,于是开始看the ruby way了,于是在这边做个记录,也算是督促自己吧..
ruby中的string可以使用多种方式来表示.
1 单引号,这种表示支持的转义最少,只支持单引号的转义和\的转义:
'bobo' ->bobo
'bobo\'\\' -> bobo'\
'bobo\t' -> bobo\t

2双引号,这种表示支持的转义就比较多了,比如换行,比如制表符..
"aa\tsd" ->    aa   sd
3 使用%q,%Q,%q相当于单引号,%Q相当于双引号.
4 使用here document.
使用这种方式,主要是为了多行字符串.
str = <<HERE
#所需要的字符串
HERE
这里的here你可以随便用什么替代,这个只是一个标记. 还有一点如果在HERE前面加一个-的话,下面每行的字符串都会自动缩进,这里默认的情况下是使用双引号的转义规则的,可是如果你给HERE加上单引号即:'HERE'那么下面的字符串将会按照单引号的转义规则进行转义..

这边还有要注意的地方,请看下面的例子:
str=<<HERE.gsub(/\n/,'')
aaaa
bbbb
HERE

程序会打印出aaaabbbb,所以这里我们可以理解HERE也就是代表了下面的字符串,我们可以在表示的同时,操作下面的字符串变成我们所需要的样子.

5 得到string的长度,可以使用size或者length方法:
str="bobo", 
str.length #4
str.size #4


6 由于string中可能含有换行,因此我们可以一次读取一行:
str = "Once upon\na time...\nThe End\n"
num = 0
str.each do |line|
 num += 1
 print "Line #{num}: #{line}"
end


7如果选择一次读取一个字节,我们可以选择each_byte方法.
str="bobo"
str.each_byte{||byte| puts byte.chr}

这个将会打印出,每个字符.

8实现自己的字符串比较规则.
要实现自定的字符串比较规则,我们只需要覆盖string内置的<=>方法就可以了.
假设我们想要实现一个长的字符串比较小的规则:
class String
	alias old <=>
	def <=>(other)
		a=self.dump
		b=other.dump
		if(a.size>b.size) then 0
		else
			a.old(b)
		end
	end
end
puts "abcd"<=>"abc"

会返回0
9 分割字符串,和java中一样,ruby中也有split方法.
默认也就是没有参数时,系统是以空格来进行分割的.
s1="a b c d"
s1.split #[a,b,c,d]

split方法还有一个参数,如果这个参数没忽略,那么尾部的空值将会被去掉,如果参数是整数,那么将要得到的数组的个数被限制为最大为这个参数,并且尾部的空值将被保留。如果参数是负数,那么数组的个数将没有限制,并且尾部的空值也会被保留.

str = "alpha,beta,gamma,,"
puts list1 = str.split(",").length # ["alpha","beta","gamma"]
puts list2 = str.split(",",2).length # ["alpha", "beta,gamma,,"]
puts list3 = str.split(",",4).length # ["alpha", "beta", "gamma", ","]
puts list4 = str.split(",",8).length # ["alpha", "beta", "gamma", "", ""]
puts list5 = str.split(",",-1).length # ["alpha", "beta", "gamma", "", ""]


10 格式化string,这个和c里面很像,使用sprintf方法.
name="bobo"
sprintf("[%s]",name)

"[%10s]" % name

这边还有三个方法,ljust,center和rjust
如果他们的第一个参数大于所要处理的字符串的长度,ljust是字符串左对齐,然后右边补跌入个参数的字符(默认是空格),center是两边补,rjust是右对齐,左边补..
str="bobo"
puts str.ljust(8,"++")
puts str.rjust(8,"++")
分享到:
评论

相关推荐

    The Ruby Way--3rd Edition--2015-英文版

    The Ruby Way 第三版(英文版),全书22章,书中包含600多个按主题分类的示例。每个示例都回答了“如何使用Ruby来完成”的问题。 ——Ruby on Rails之父David Heinemeier Hansson倾力推荐!

    The Ruby Way(第2版)

    The Ruby Way(第2版) &lt;br&gt;The Ruby Way assumes that the reader is already familiar with the subject matter. Using many code samples it focuses on "how-to use Ruby" for specific applications, either ...

    THE RUBY WAY(中文版)(第二版)pdf

    《The Ruby Way 第二版》...“《The Ruby Way (第2版)中文版》在阐述元编程(metaprogramming)等方面尤其出类拔萃,而元编程是Ruby最引人注目的方面之一。” ——Ruby on Rails之父David Heinemeier Hansson倾力推荐!

    the-ruby-way

    the ruby way the ruby way

    the ruby way 2ed

    《The Ruby Way 2nd Edition》是一本深入探讨Ruby编程语言的经典著作,旨在帮助读者全面理解和掌握Ruby的精髓。这本书的第二版在2006年出版,由Addison-Wesley出版,作者通过深入浅出的方式,揭示了Ruby语言的强大...

    ruby学习资源(Programming Ruby, Learning Ruby, The Ruby Way)

    内含以下4个文档: 1、Addison.Wesley.The.Ruby.Way.2nd.Edition.Oct.2006.chm 2、O'Reilly.Learning.Ruby.May.2007.chm 3、Programming Ruby 2e.pdf 4、ruby中文文档.chm

    深入体会Ruby的String类型有哪些强项

    总结来说,Ruby 的 String 类型强大之处在于它的可变性以及对性能的优化。通过内部结构的巧妙设计,Ruby 能够在保持字符串操作便捷的同时,有效地管理和利用内存,减少了不必要的内存分配和复制。这使得在处理字符串...

    11.5 时间日期the ruby way.rar

    "11.5 时间日期the ruby way"这个主题深入探讨了Ruby中处理时间日期的最佳实践和常见用法。让我们逐一了解这些知识点。 首先,`Time.now`是Ruby中获取当前时间的标准方法。它返回一个`Time`对象,表示自1970年1月1...

    Ruby-Way.rar_About Language

    《Ruby Way》是由Hal Fulton编写的关于Ruby编程语言的一本著作。这本书深入浅出地探讨了Ruby语言的各种特性,旨在帮助读者理解并掌握这门强大的动态脚本语言。Ruby以其简洁、优雅的语法和强大的元编程能力而备受赞誉...

    the ruby way

    《The Ruby Way》是一本备受推崇的Ruby编程教程,它以独特的方式深入浅出地介绍了Ruby语言。这本书的核心理念是“如何解决问题”,作者通过实际的编程示例和问题解决策略,帮助读者理解Ruby的强大功能和优雅语法。 ...

    Addison Wesley The Ruby Way 2Nd Edition Oct 2006.pdf(英文版)

    通过以上内容的详细讲解,《The Ruby Way》第二版为读者提供了全面且深入的Ruby编程知识体系,无论是对于初学者还是有经验的开发者而言,都是一本非常有价值的参考书籍。此外,读者还可以从作者提供的网站...

    Ruby-BitString:Ruby 的 BitString gem

    BitString 是一个 Ruby 类,用于以类似“数组”的方式提供对位列表的访问。 直接寻址、分段、屏蔽等。 特征: Array 类的许多功能可用于 BitString。 问题: 未知,但请查看 GitHub 项目。 概要: require('bit...

    ruby-string-calculate:扩展Ruby的String类以计算简单的数学表达式

    将calculate方法添加到Ruby String类。 该方法可以执行以下数学运算: 添加 减法 乘法 分配 例子: "1 + 2".calculate # =&gt; 3 "9 - 2".calculate # =&gt; 7 "5 * 2".calculate # =&gt; 10 "15 / 3".calculate # =&gt; 5 ...

    Addison.Wesley.The.Ruby.Way.2nd.Edition.Oct.2006.chm

    《The Ruby Way》第二版是Addison-Wesley出版社在2006年推出的一本深入浅出的Ruby编程语言教程。这本书专为初学者设计,旨在帮助读者快速掌握Ruby语言的基础和高级特性,从而轻松入门Ruby编程。Ruby是一种动态、开放...

    Ruby-StringTemplate一个快速的Rails的模板引擎

    Ruby StringTemplate是一个高效且专为Rails框架设计的模板引擎,它充分利用了Ruby语言的字符串插值功能来提高渲染速度。在Rails应用中,模板引擎扮演着至关重要的角色,它们负责将数据模型与视图结合,生成动态HTML...

Global site tag (gtag.js) - Google Analytics