2 字符篇

前面我们已经了解了Ruby中数字的使用,那么字母呢?以及单词和文本怎么使用?

Letters

在程序中我们把由字母连在一起的这个串成为“字符串”(你可以联想到打印出来的几个字母用一个横幅串起来)为了方便区别在代码中哪部分是字符串,我把字符串部分标绿。下面是一些例子:

'Hello.'
'Ruby rock.'
'5 is my favorite number... what is yours?'
'Snoopy says #%^?&*@! when he stubs his toe.'
'            '

你可以看出,字符串是可以包含标点、数位、符号及空格……而不仅仅是字母。最后一个字符串里面没有含任何内容,我们把这样的叫做空字符串。

我们之前用puts来输出过数字了,现在我们用字符串试试:

puts 'Hello,world!'
puts ' '
puts 'Good-bye.'
Hello,world!

Good-bye.

看来程序运行得还不错,现在可以试试你自己想的例子。

字符串的运算

既然数字之间可以运算,你也可以进行字符串运算!好吧,只是部分……当然你可以进行字符串的加法。让我们试着做两个字符串的加法运算来看看之后会有什么结果:

puts 'I like' + 'apple pie.'

哎呦!我忘了在 “I like” 和 “apple pie.”之间放空格了。空格通常是没啥影响的,但是在字符串中就会很重要。(可见有句话说的很对:电脑不会按我们的想法去做事,只有我们教它们才可以)
下面让我们再试试:

puts 'I like ' + 'apple pie.'
puts 'I like' + ' apple pie.'
I like apple pie.
I like apple pie.

(正如你所见,我把空格加在两者中哪个字符串中是没啥影响的)
既然你可以进行字符串加法,你也能做字符串乘法!(不过需要用到数字)看看下面这个例子:^_-)≡

puts 'blink ' * 4

这怎么可能 ミ゚Д゚彡 !眨四次眼睛就不理人了?好吧,开个玩笑……实际输出是:


如果你稍微思考一下,上面的输出实际上是有道理的。别忘了,7*3 实际的计算过程是 7+7+7,所以 'moo ' *3 是表示‘moo ’ + ‘moo ’ + ‘moo ’.

(牛叫3声 哞 哞 哞        -----译者注)

12 与 ' 12 '

在我们进行下一步前,我们需要确定我们理解数字和数位的区别。12 是数字,而 ‘12’是2个数位的字符串。
我们先试试下面这个例子:

puts  12 +  12
puts '12' + '12'
puts '12  + 12'

输出为:

24
1212
12  +  12

又比如:

puts  2  *  5
puts '2' *  5
puts '2  *  5'

输出为:

10
22222
2  *  5

上面的例子区别是很明显的,但如果你将字符串和数字组合的时候不太注意的话,你可能会出问题的……

遇到的问题

学习到现在你可能已经碰到一些没法运行的问题。如果你没碰到过,下面有几个例子:

puts '12' + 12
puts '2' * '5'

输出为:

#<TypeError: no implicit conversion of Fixnum into String>

嗯……一条出错消息。这里的问题是你不能把一个数字加到一个字符串上,或乘以一个字符串到另一个字符串上。比如像下面这个例子所示的,这样做没任何意义:

puts 'Betty' + 12
puts 'Fred' * 'John'

其他值得一提的是:你可以在程序中写 ‘pig’ *5,这是表示5组 ‘pig’ 字符串加到一起,但是你不可以写成5* ‘pig’ ,而这是表示 ‘pig’ 组数字 5,这样是没意义的。

另外,假如我想输出 You're swell!,该如何写呢?试试如下:

puts 'You're swell!'

好吧,程序不会成功运行的,我甚至都没必要去运行它。电脑会认为我们想输出字符串(这就是为什么我推荐使用自带语法高亮的代码编辑器)。那么我们怎么样让电脑理解我们想让字符串保持整体输出呢?我们不得不跳过撇号,像下面这样:

puts 'You\'re swell!'


这里反斜线是换码符号,也就是说当你用到一个反斜线和另一个字符,它通常会将其转换成一个新的符号,但是唯独当使用反斜线和撇号在一起时会变成忽略符号(如果你思考一下,换码符号必须忽略他们自己)。下面举几个例子:

puts 'You\'re swell!'
puts 'backslash at the end of a string:  \\'
puts 'up\\down'
puts 'up\down'

从上面的输出可以看出:反斜线碰到 ‘d’的时候不会忽略自己,但是碰到另一个反斜线时会忽略它本身。最后两个字符串是相同的,虽然在代码上是不同,但是输出到屏幕上是一样的。

通过以上内容,如果你还有些疑惑的话,尽管继续进行下一节学习!毕竟我没法在这里解答你所有的问题。(〃''〃)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容