美文网首页Ruby & RailsRubyRuby on Rails
5 天外有天(3)无规无矩

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

作者: 彩虹门票 | 来源:发表于2017-07-22 19:15 被阅读8次
    大话西游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
    
    输出
    很标准的输出结果,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))
    
    输出
    嗯……我想不起来这首童谣是不是这样写的,不过我懒得去查阅了。我想把.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)
    
    输出

    牛刀小试

    • 写一个“坏老板”程序:它会粗鲁地问你想要什么,不论你回答什么,它总会向你喊叫同样的话,然后炒你鱿鱼。比如你回应:我想升职加薪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)无规无矩

        本文链接:https://www.haomeiwen.com/subject/jmdukxtx.html