© Shine's Blog

Powered by LOFTER

[Ruby 中文教程 By Chris Pine] 2.文字

翻译:阳光

原文来自 <https://pine.fm/LearnToProgram/?Chapter=02


2.文字

 

    好的,我们已经学会数字了,那字母呢?单词呢?文本呢?

    在程序中,我们把一些字母的组合称为字符串strings(string是“用带系上”的意思,你可以把输出的字母看成是被系在一个旗杆上)。为了更好地看出代码的哪一部分是字符串,我会将字符串设置为红色。这是一些字符串:

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

    如你所见,字符串可以包含标点、数字、符号和空格……而不仅仅是字母。最后一个字符串什么都没有,我们叫它空字符串。

 

输入:

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

返回:

    Hello, world!

    Good-bye.

非常好,现在你自己试试。

字符串的计算法则

    跟你可以用数字来计算一样,你也可以用字符串来运算!好吧,只是一部分运算可以……至少你可以用字符串做加法。让我们试试将两个字符串加起来,看看会输出什么效果。

 

输入:

    puts 'I like'+ 'apple pie.'

返回:

    I likeapple 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

输出:

    batting her eyes

(开玩笑的……它实际上会输出这个:)

    blink blink blink blink

    如果你想一想,这个确实很有道理。毕竟,7*3就是等于7+7+7,所以'moo'*3自然就是'moo'+'moo'+'moo'了。

12与'12'

    在我们进一步学习之前,我们要确保自己明白数字与位数的区别。12是一个数字,'12'是一个有两个位数的字符串。

让我们再来熟悉一下:

输入:

    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: can't convert Fixnum into String>

    嗯……一个错误信息。问题是你不能真的用一个数字去加上一个字符串,或者用一个字符串去乘以另一个字符串。这跟输入这种东西差不多:

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

    一些需要注意的事情:你可以在程序里写'pig'*5,它只表示把五个pig连在一起。但是,你不能写5*'pig',因为那意味着用'pig'来设置数字5,这是不可能的。

    最后,如果我们想让程序输出You're swell怎么办?我们可以试试这个:

输入:

    puts 'You'reswell!'

    好吧,这不会管用的,我甚至不会尝试输入它。计算机肯定会以为我们已经在You之后就把字符串结束了(这也是为什么一个能自动标记颜色的文本编辑器是个很好的工具)。所以我们怎么能让计算机把这个字符串输出完整呢?我们必须避开撇号,像这样:

输入:

    puts 'You\'re swell!'

输出:

    You're swell!

    反斜杠是一个规避符。换句话说,如果你一个反斜杠后连着一个字符,那它们会结合成一个新的字符。反斜杠规避的唯一东西就是撇号和反斜杠本身(如果你想想的话,规避符肯定要连自己一起规避掉)。我举了一些例子:

输入:

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

输出:

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

    反斜杠不会规避“d”,但是会规避它自己,最后两个字符串很能说明问题,在代码里它们并不相同,但在你的电脑里它们却是一样的。

    如果你有任何问题,继续阅读就好了!我毕竟不能把这一页的所有问题都回答了。


发表于2014-07-07.1热度.