iT邦幫忙

DAY 6
4

Ruby女孩:10萬.times { puts "為什麼?" }系列 第 6

Ruby女孩(6):Ruby的"-字-字-字-字-字-"

  • 分享至 

  • xImage
  •  

阿太棒了,Code的顯示換了,變得比較清楚了!我可以不用慢慢截圖了!!!

昨天提到了數字,發現Ruby替數做的分類與生活中不太相同,那文字呢?今天來說說Ruby資料型別中的文字

※加上單引號的字串

'-字-字-字-字-字-字-字-' # 一堆字被串起來,就是字串。

Ruby會認單引號來當作字串的開始跟結尾,但是如果字串裡需要出現單引號怎麼辦?

'安安你好嗎?I'm fine!'

Ruby看見的字串只有 ' 安安你好嗎?I ' ,還有後面的字串開頭 ' ,這時候執行程式碼,他會以為你還沒打完,執行時沒有效果!所以為了避免這種問題,就需要在字串裡的單引號前,加上倒斜線(backslash)來避開才行:

'安安你好嗎?I\'m fine!' #仔細看I'm改成I\'m!
執行結果為 => "安安你好嗎?I'm fine!" #它會自動把斜線拿掉!

那如果字串裡想畫個像『/( ' V ' )/』這樣子的表情符號該怎麼寫呢XD?

'/(  \'  V  \'  )/' #就把兩個眼睛前面都加上反斜線就好!
執行結果為 => "/(  '  V  '  )/"

這種單引號的字串可以跨很多列,如果你字比較多想要分行寫,你可以:

'安安,
你好!
天氣真不錯!'   #因為Ruby都只認單引號當開頭與結尾,所以他自動會幫忙轉成一行,但...
執行結果為 => "安安,\n你好!\n天氣真不錯!"

字串裡面被包了奇怪的東西『\n』,那是換列字符,如果想要字串裡乾淨一些,可以再派出反斜線:

'安安,'\    #這行行尾要加上反斜線規避
'你好!'\    #這行也要加
'天氣真不錯!'  #最後一行可別加!加了他就不知道你到結尾了~
執行結果為 => "安安,你好!天氣真不錯!"

※加上雙引號的字串

比起單引號,雙引號彈性多了!雙引號最厲害的是可以在字串裡面插入任意的Ruby運算式(在Ruby中稱為**『字串安插(string interpolation)』**),不過這些運算式,要被放在『 #{ } 』裡面,例如:

"我喜歡吃#{1+1}個便當!"
執行結果為 => "我喜歡吃2個便當!"

這好處有很多很多,譬如可以先定義一個變數,再把變數放入字串裡面:

a = 'Ruby!' #先設個變數a等於字串Ruby
"我喜歡:#{a*3}"
執行結果為 => "我喜歡Ruby!Ruby!Ruby!"

雙引號字串還有另一個特色,就是支援了一些倒斜線規避序列(backslash escape sequence),例如:

"\n" #代表換列(Newline)
"\t" #代表跳格(Tab)
"\s" #代表空格(Space)
"國父\s孫中山先生"
執行結果為 => "國父 孫中山先生

除了上述提到三個之外,還有很多,有興趣的朋友可以參考這裡

但其實,當字串裡有出現撇號或引號時,很難直接拿來使用,一直規避就飽了(就像前面的文字符號一樣,很麻煩),所以Ruby又發明了兩個語法來支援這種狀況:『 %q 』與『 %Q 』。

%q(我是安妮 I'm Annie)
執行結果為 => "我是安妮 I'm Annie"
%Q(我是安妮,我今天吃#{1+1}碗!)
執行結果為 => "我是安妮,我今天吃2碗!"
%Q(/(  '  V  '  )/)
執行結果為 => "/(  '  V  '  )/"

趴小Q,作用跟加上單引號相同;趴大Q,作用跟加上雙引號相同!這樣是不是方便很多呢(大心)!

=================================================

來到第六天了,今天要對自己說的,跟昨天的有點像XD不是偷懶啊,是剛好喜歡這簡簡單單的話:

Do more of what makes you happy.

字串的部分還沒說完,還有字串的運算規則與迭代等等的,繼續努力!


上一篇
Ruby女孩(5):Ruby的數學跟老師教的數學都不一樣?
下一篇
Ruby女孩(7):原來字串也可以比大小?
系列文
Ruby女孩:10萬.times { puts "為什麼?" }30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
altispec
iT邦新手 4 級 ‧ 2014-10-06 23:50:06

看起來像String又好像字串更像串雞屁股~ 肚子餓....

0
otiann
iT邦新手 2 級 ‧ 2014-10-07 00:56:59

@AnNOtis XDD對不起我po了宵夜文.....

0
逮丸逮丸
iT邦大師 1 級 ‧ 2014-10-07 08:20:20

為什麼可以寫出黑底白字?
bbcode怎麼寫?
從這個網址:
http://ithelp.ithome.com.tw/question/10158406

看更多先前的回應...收起先前的回應...
otiann iT邦新手 2 級 ‧ 2014-10-07 10:02:04 檢舉

啊樓下的@roger03說的沒錯~因為鐵人賽的編輯器可以選擇文字背景顏色!
沒辦法寫inline code,只好這麼做了XD“
這是鐵人賽編輯器畫面:

otiann iT邦新手 2 級 ‧ 2014-10-07 10:53:37 檢舉

如果你需要他的原始碼的話,這是它自動產生的原始碼,有點醜,不過我完全複製過來給你參考!

<pre class="c" name="code"><span style="color:rgb(255, 255, 255)"><span style="background-color:rgb(0, 0, 0)">'安安你好嗎?'</span></span>

[註]『'』是指單引號。

otiann iT邦新手 2 級 ‧ 2014-10-07 11:05:46 檢舉

阿不好意思我看到你需要的是BBCode,因為我沒用過,不過我查了一下,下面貼的是背景色BBCode,你參考看看!(參考連結)

<pre class="c" name="code">[bg=black]
This background will be black
[/bg]

因為沒試過,我偷偷在這邊試試看,看能不能巢狀使用XD
<span style="color: #ffffff;">[bg=#000000]
TEST TEST 請給我黑底白字!
[/bg]</span>

otiann iT邦新手 2 級 ‧ 2014-10-07 11:08:14 檢舉

阿,上面留言請反白Orz,看來這裡只有支援白字,不支援黑底...囧"
希望有幫到你XD"

0
roger03
iT邦新手 4 級 ‧ 2014-10-07 09:49:34

鐵人賽的編輯器可以設定黑底白字啊!

otiann iT邦新手 2 級 ‧ 2014-10-07 10:02:34 檢舉

哈~感謝說明!

0
otiann
iT邦新手 2 級 ‧ 2014-10-07 11:12:55

@twtw, @羅傑 原來在這個網址的逐一回應,在鐵人賽頁面是看不到的@@,我把回覆都貼在這裡囉:http://ithelp.ithome.com.tw/question/10158406,希望有幫助XD

我要留言

立即登入留言