ruby將字串像數字一樣處理.我們用單引號('...')或雙引號("...")將它們括起來.
ruby> "abc"
"abc"
ruby> 'abc'
"abc"
單引號和雙引號在某些情況下有不同的作用.乙個由雙引號括起來的字串允許字元由乙個前置的斜槓引出,而且可以用#{}內嵌表示式.而
單引號括起來的字串並不會對字串作任何解釋;你看到的是什麼便是什麼.幾個例子:
ruby> print "a\nb\nc","\n"ac
nilruby> print 'a\nb\n',"\n"
a\nb\nc
nilruby> "\n"
"\n"
ruby> '\n'
"\\n"
ruby> "\001"
程式設計客棧; "\001"
ruby> '\001'
"\\001"
ruby> "abcd # efg"
"abcd 15 efg"
ruby> var = &quwww.cppcns.comot; abc "
" abc "
ruby> "1234#5678"
&nbgzmwzssp; "1234 abc 5678"
ruby的字串操作比c更靈巧,更直觀.比如說,你可以用+把幾個串連起來,用*把乙個串重複好幾遍:
ruby> "foo" + "bar"
"foobar"
ruby>www.cppcns.com; "foo" * 2
"foofoo"
相比之下,在c裡,因為需要精確的記憶體管理,串聯字串要笨拙的多:
char *s = malloc(strlen(s1)+strlen(s2)+1);
strcpy(s, s1);
strcat(s, s2);
/* ... */
free(s);
但對於ruby,我們不需要考慮字串的空間占用問題,這令到我們可以從煩瑣的記憶體管理中解脫出來.
下面是一些字串的處理,
串聯:ruby> word = "fo" + "o"
"foo"
重複:ruby> word = word * 2
"foofoo"
抽取字元(注意:在ruby裡,字元被視為整數):
ruby> word[0]
102 # 10www.cppcns.com2 is ascii code of `f'
ruby> word[-1]
111 # 111 is ascii code of `o'
(負的索引指從字串尾算起的偏移量,而不是從串頭.)
提取子串:
ruby> herb = "parsley"
"parsley"
ruby> herb[0,1]
"p"ruby> herb[-2,2]
"ey"
ruby> herb[0..3]
"pars"
ruby> herb[-5..-2]
"rsle"
檢查相等:
ruby> "foo" == "foo"
true
ruby> "foo" == "bar"
false
注意:在ruby 1.0裡,以上結果以大寫字母出現.
好,讓我們來試試這些特性.下面是乙個猜詞的謎題,可能"謎題"這個詞用在下面的東西上太酷了一點;-)
# s**e this as guess.rb
words = ['foobar', 'baz', 'quux']
secret = words[rand(3)]
print "guess? "
while guess = stdin.gets
guess.chop!
if guess == secret
print "you win!\n"
break
else
print "sorry, you lose.\n"
end
print "guess? "
endprint "the word was ", secret, ".\n"
現在,別太擔心**細節了.下面是謎題程式執行的乙個對話.
% ruby guess.rb
guess? foobar
sorry, you lose.
guess? quux
sorry, you lose.
guess? ^d
the word was baz.
(考慮到1/3的成功率,也許我本該做得好一點.)
本文標題: ruby 字串處理
本文位址:
ruby字串的處理
最最常用的字串處理函式 1.返回字串的長度 str.length integer 2.判斷字串中是否包含另乙個串 str.include?other str true or false hello include?lo true hello include?ol false hello includ...
Ruby 字串處理函式
字串處理函式 1.返回字串的長度 str.length integer 2.判斷字串中是否包含另乙個串 str.include?other str true or false hello include?lo true hello include?ol false hello include?h t...
Ruby 字串處理函式
字串處理函式 1.返回字串的長度 str.length integer2.判斷字串中是否包含另乙個串 str.include?other str true or false hello include?lo true hello include?ol false hello include?h tr...