体验一下ruby字符串

上一篇 / 下一篇  2007-04-27 19:57:37

查看( 668 ) / 评论( 7 )

Ruby Cookbook上面说能赋值给变量的都是对象。我看什么都是对象,但如果什么都是对象运行起来就占内存多了,对象要靠线程,线程又指向内存地址,我估计Ruby代码多了弄不好会老吃内存,感觉PHP的对象可以只在类内部实例化一次,然后哪都能用,又不会因为实例化太多而吃内存,这样想比Ruby好呀,不过Ruby我刚开始看,先体验中,要是学多一点点就不会这么乱说啦。

Ruby里面用双引号和单引号括起来的叫字符串,PHP里面也是,在PHP里面单引号是纯字符串,双引号括起来的东西是要先计算的,然后确定为字符串,这样就比单引号的慢一点点,不过那样可以在字符串里面插入变量,不知道Ruby是不是这样的,我还没看到那呢。
在Ruby里面呢,双引号和单引号的区别就是:目前我发现的就是反斜杠转义特殊字符,双引号和单引号都可以转义,最常见的就是双引号里面放个换行符“\n”。单引号里面发现两个是需要转义的,比如反斜杠“\”和单引号“'”,“\”要写成两个反斜杠“\\”,“'”单引号则要写成“\'”才行,而双引号则免了“\”。

比如
string="It's a string"

也可以这么写
string='It\'s a string'
这两种写法都是同样输出:It's a string

计算字符串长度用length,刚才的string要知道有几个字节,可以这么写
string.length
这样将输出13
然后13就变成一个对象了,具体的说就是对象调用方法后返回的还是一个对象,比如string.length就是一个对象,然后可以在这个对象上继续用方法,像string.length.next将输入14,这就是说先得到string.length的值是13,然后13是一个对象,next方法就是下一个的意思,下一个就是14,晓得不?

然后是统计字符串出现的次数,用count

比如要统计 string 对象中 s 出现了几次就这么写
string.count 's'
这样就输出2,数一下就知道s出现了两次呗。
也可以用括号的,像这样
string.count('s')
结果是一样的。
要是把S大写了就返回0,0就是false.
比如
string.count 'S'
将输出0,很显然Ruby区分大小写的。

下面就说下截取指定索引的字符串。

第一种,可以用slice方法,比如我要取出string里面的string单词,可以这么写
string.slice(7,6)
这样就输出"string"
看得出string对象里面起始索引0是"I",然后数到第7个就是"s",要截取6个字母刚好就是我要的单词"string".
如果倒过来就是这么写
string.slice(-6,6)
只是倒着数而已,不难理解吧.
结果是一样的。
string.slice(-6,100)
还是返回"string",应该是多于的就计算了,我这么想的。

第二种,就是联合字节,和C差不多
要取出string这么写,指定要联合的索引就行了
string[7].chr + string[8].chr + string[9].chr + string[10].chr + string[11].chr + string[12].chr
这样同样放回单词"string",很显然这样写要多打几个字,不过也可以看出好处就是”字节组合“,可以颠倒顺序,和拼字游戏差不多。松本还可爱咧,哈哈。

第三种直接在string对象上面放中括号指定起点和个数就行了
string[7,6]
当然倒着数也行
string[-6,6]
还是输出"string"哈。

要是你想把单词全部大写可以用upcase方法,
比如说你想把string对象大写,就这样
string.upcase
会输出 "IT'S A STRING"
但是你直接输入string对象时还是小写的,输出"It's a string"
要是你想把string对象的值改变为大写不变可以加个感叹号”!“像
string.upcase!
就把string对象全部给大写了,你现在输入
string
将会输出 "IT'S A STRING"
这样值就被改变过来了。不知道怎么变回去呢。如果你按上面的步骤做了,你再输入
!string.upcase
将返回false,如果输入
!string.upcase!
将返回true,这个想想就明白了哈。

Ruby要确定一个东西是true或false居然用?,牛吧~
看例子
string.empty?
empty是空的意思,后面加个问号就是问string对象是不是空的,很显然不是空的啦,所以结果返回的就是false
再看看这个
string.include? "I"
这个就返回true
include单词就是调用包含的意思,这句代码就是说"I"这个字符在不在string里面,很显然在,你会说Ruby区分大小写,因为刚刚弄过那个upcase!方法,所以就把原来的string全部转换成大写了,你要是用小写的"i"就返回false.

我刚花了不到10分钟的时间看了书的前两页,所以体验到的一些东西分享给大家啦,比书上说的更好理解,对不?大家关注开源精神,支持我们Ruby on Rails QQ高级群24453037哈,一起学Ruby和Rails。


TAG: ruby Ruby字符串 macoo

关注开源,关注ROR macoo 发布于2007-04-27 20:15:34
原创作品,要求加精!
zhuzhao的个人空间 zhuzhao 发布于2007-06-12 12:46:17
LZ:《Ruby Cookbook》這本書怎么樣?介紹一下,謝謝!我想買!
RailsChina railschina 发布于2007-06-12 13:16:54
我买了英文版,里面都是针对ruby编程中经常会碰到的一些典型问题的解决方案,非常实用

是分专题的方式讲的,如string,array,hash,xml,web,rails等等

跟人感觉非常有帮助,可以作为手头的一部参考书,也可以经常拿出来看看,体验一下ruby的强大功能和使用技巧
zhuzhao的个人空间 zhuzhao 发布于2007-06-12 14:13:18
英文版?英語太爛了,中文版的翻譯的怎樣?
RailsChina railschina 发布于2007-06-12 14:43:07
每一章都是相对独立的议题,所以不是很难懂,只要英文还可以就行了

中文版没看过,现在对中文版通常比较抵触。。。
d2.zhang发布于2007-08-21 21:35:32
Ruby Cookbook我也买了,不过还没有看完。
是一本非常有用的书。可以当字典用。
Need For Highlight keyword 发布于2007-08-21 22:33:37
是一本不错的手册,偶碰到问题的时候都会拿出来,平常也放在床头经常翻一翻
我来说两句

(可选)

日历

« 2008-11-21  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

数据统计

  • 访问量: 1046
  • 日志数: 5
  • 建立时间: 2007-04-01
  • 更新时间: 2007-05-17

RSS订阅

Open Toolbar