



体验一下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。