5 天外有天(3)无规无矩

5 天外有天(3)无规无矩_第1张图片
大话西游2.jpeg

有许多种改变字符串大小写的方法: upcase把所有小写字母改为大写; downcase把所有大写字母改为小写; swapcase会转换字符串中的每个字母(原字母若为大写转换成小写,若为小写则转换成大写); capitalize是类似 downcase,区别是它还会把第一个字符转换成大写(如果首字符是字母的话)。

letters = 'aAbBcCdDeE'
puts letters.upcase
puts letters.downcase
puts letters.swapcase
puts letters.capitalize
puts ' a'.capitalize
puts letters

5 天外有天(3)无规无矩_第2张图片
输出

很标准的输出结果, puts ' a'.capitalize这一行, capitalize只会将首字符大写,而不是首字母。同样的,就像之前我们看到的几个转换方法,原字符串依旧不会被改变。我并不是想反复强调这一点,只是理解这一点很重要。有部分方法会改变相关联的对象,只是我们现在还没学到,稍后你们将会看到。

我们将会学习的最后一种字符串方法是用于视觉格式的(文字输出排版格式)。第一个是center,它会在字符串开始和结尾处都增加空格使其居中放置。但是就像你需要告诉puts要输出你想要的内容,需要写上你想要增加的内容,你同样需要告诉center你想要居中的字符串需要有多宽。因此如果我想要把一首诗中的句子居中,我将会这样做:

lineWidth = 50
puts(                'Old Mother Hubbard'.center(lineWidth))
puts(               'Sat in her cupboard'.center(lineWidth))
puts(         'Eating her curds an whey,'.center(lineWidth))
puts(          'When along came a spider'.center(lineWidth))
puts(         'Which sat down beside her'.center(lineWidth))
puts('And scared her poor shoe dog away.'.center(lineWidth))

5 天外有天(3)无规无矩_第3张图片
输出

嗯……我想不起来这首童谣是不是这样写的,不过我懒得去查阅了。我想把 .center lineWidth部分排整齐点,所以我在字符串前面加了其他的空格,这只是因为我觉得这样排版好看点。程序员对于程序中代码如何漂亮点通常有很强的感觉和要求,一部分人会不太赞同。你越经常编程的话,你越会在代码中体现出属于你自己的风格)提到懒惰,在编程中懒并不总是件坏事。比如上面例子中发现我如何在变量 lineWidth中储存诗歌的行宽了吧?这是以便于我之后如果想让这首诗变宽点,我只需要改变程序中的第一行就可以了,而不需要改动每个需要居中的行。对于一个较长的诗歌来说,这将为我节省许多时间。这种懒在编程中可谓是种美德。

另外关于格式居中……你可能感觉相较于文字排版软件中的做法,上面的处理不是非常美观。如果你想要完美的居中(或更漂亮的字体),你需要去使用文字排版软件!Ruby虽是一个极好的工具,但是没有任何工具会适用于所有的工作。

剩下的两个字符串格式的方法是ljustrjust,是left justify 和 right justify的缩写。它们和center类似,它们会在左/右两侧各自用空格填补字符串。下面我们在程序中演示它们三个:

lineWidth = 40
str = '--> text <--'
puts str.ljust  lineWidth
puts str.center lineWidth
puts str.rjust  lineWidth
puts str.ljust(lineWidth/2) + str.rjust(lineWidth/2)
5 天外有天(3)无规无矩_第4张图片
输出

牛刀小试

  • 写一个“坏老板”程序:它会粗鲁地问你想要什么,不论你回答什么,它总会向你喊叫同样的话,然后炒你鱿鱼。比如你回应:我想升职加薪I want a raise.,它会回应:
    WHADDAYA MEAN "I WANT A RAISE."?!? YOU'RE FIRED!!
    你还想升职加薪!? 你被炒了!!
  • 下面是想用center/ljust/rjust处理表格:写出一个程序能够输出像下面这样的内容:
                    Table of Contents                
                                                
Chapter 1:  Numbers                        page 1
Chapter 2:  Letters                       page 72
Chapter 3:  Variables                    page 118

  • 参考:


    5 天外有天(3)无规无矩_第5张图片

    5 天外有天(3)无规无矩_第6张图片
    输出

你可能感兴趣的:(5 天外有天(3)无规无矩)