打印

体验一下ruby字符串

本帖已经被作者加入个人空间

体验一下ruby字符串

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。




本帖最近评分记录

TOP

原创作品,要求加精!

TOP

LZ:《Ruby Cookbook》這本書怎么樣?介紹一下,謝謝!我想買!

TOP

我买了英文版,里面都是针对ruby编程中经常会碰到的一些典型问题的解决方案,非常实用

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

跟人感觉非常有帮助,可以作为手头的一部参考书,也可以经常拿出来看看,体验一下ruby的强大功能和使用技巧
First they ignore you, then they laugh at you, then they fight you, then you win.

TOP

英文版?英語太爛了,中文版的翻譯的怎樣?

TOP

每一章都是相对独立的议题,所以不是很难懂,只要英文还可以就行了

中文版没看过,现在对中文版通常比较抵触。。。
First they ignore you, then they laugh at you, then they fight you, then you win.

TOP

Ruby Cookbook我也买了,不过还没有看完。
是一本非常有用的书。可以当字典用。

TOP

是一本不错的手册,偶碰到问题的时候都会拿出来,平常也放在床头经常翻一翻
def keyword; end

TOP