大話西游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雖是一個極好的工具,但是沒有任何工具會適用于所有的工作。
剩下的兩個字符串格式的方法是ljust
和rjust
,是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
-
參考:
輸出