26

Click here to load reader

Ruby初級者向けレッスン 47回 ─── 文字列

  • Upload
    higaki

  • View
    540

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Ruby初級者向けレッスン 47回 ─── 文字列

2014年1月25日

Ruby初級者向けレッスン 47回— 文字列 —

ひがき @ Ruby関西

Page 2: Ruby初級者向けレッスン 47回 ─── 文字列

文字列• リテラル• エンコーディング• 順序• 比較• 数え上げ• 破壊

Page 3: Ruby初級者向けレッスン 47回 ─── 文字列

文字列の作り方String.new # => ""

String.new("ruby") # => "ruby"

1.to_s # => "1"

[1, 2, 3].to_s # => "[1, 2, 3]"

Page 4: Ruby初級者向けレッスン 47回 ─── 文字列

文字列リテラル"Ruby関西" # => "Ruby関西"

’文字列に " を含む’

# => "文字列に \" を含む"

%|’ も " も含む|

# => "’ も \" も含む"

Page 5: Ruby初級者向けレッスン 47回 ─── 文字列

式展開"#{name}さん (#{age})"

# => "松本行弘さん (48)"

’#{name}さん (#{age})’

# => "\#{name}さん (\#{age})"

Page 6: Ruby初級者向けレッスン 47回 ─── 文字列

エンコーディングs = "Ruby関西"

s.encoding # => #<Encoding:UTF-8>

e = s.encode(Encoding::EUC_JP)

e.encoding # => #<Encoding:EUC-JP>

Encoding.list

Page 7: Ruby初級者向けレッスン 47回 ─── 文字列

マジックコメント• 指定がなければ UTF 8

• Emacs� �# -*- coding: cp932; -*-� �

• Vim� �# vi: set fileencoding=cp932 :� �

Page 8: Ruby初級者向けレッスン 47回 ─── 文字列

順序["Ruby", "Java", "C#", "Lisp"].sort

# => ["C#", "Java", "Lisp", "Ruby"]

"a".succ # => "b"

"b".succ.succ # => "d"

"z".succ # => "aa"

"9".succ # => "10"

"Ruby".succ # => "Rubz"

Page 9: Ruby初級者向けレッスン 47回 ─── 文字列

比較"Ruby" == "Ruby" # => true

"Ruby" != "Ruby" # => false

"Ruby" === "Ruby" # => true

"Ruby".eql? "Ruby" # => true

"Ruby".equal? "Ruby" # => false

"Ruby" =~ /Ruby/ # => 0

"Ruby" !~ /Ruby/ # => false

Page 10: Ruby初級者向けレッスン 47回 ─── 文字列

比較 (2)

s = "Ruby関西".encode(Encoding::CP932)

u = "Ruby関西".encode(Encoding::UTF_8)

s == u # => false

Page 11: Ruby初級者向けレッスン 47回 ─── 文字列

数え上げ"Ruby"[0] # => "R"

"Ruby"[1] # => "u"

"Ruby"[2] # => "b"

"Ruby"[-1] # => "y"

"Ruby関西"[1, 2] # => "ub"

"Ruby関西"[2..3] # => "by"

"Ruby関西"[3..-2] # => "y関"

Page 12: Ruby初級者向けレッスン 47回 ─── 文字列

数え上げ (2)

"Ruby関西".chars.each{|c| puts c}

# >> R

# >> u

# >> b

# >> y

# >> 関# >> 西

Page 13: Ruby初級者向けレッスン 47回 ─── 文字列

数え上げ (3)

"Ruby関西".bytes

# => [82, 117, 98, 121, 233, 150,

162, 232, 165, 191]

"Ruby関西".codepoints

# => [82, 117, 98, 121, 38306, 35199]

Page 14: Ruby初級者向けレッスン 47回 ─── 文字列

数え上げ (4)

"No\nRuby\nNo\nLife\n".lines.each do |l|

p l

end

# >> "No\n"

# >> "Ruby\n"

# >> "No\n"

# >> "Life\n"

Page 15: Ruby初級者向けレッスン 47回 ─── 文字列

破壊s = "ruby"

s.upcase # => "RUBY"

s # => "ruby"

s.upcase! # => "RUBY"

s # => "RUBY"

Page 16: Ruby初級者向けレッスン 47回 ─── 文字列

破壊 (2)

s = "ruby" s ruby-

s.upcase RUBY-

Page 17: Ruby初級者向けレッスン 47回 ─── 文字列

破壊 (3)

s = "ruby" s RUBY-

s.upcase!

Page 18: Ruby初級者向けレッスン 47回 ─── 文字列

破壊 (4)

s = "ruby"

t = s # => "ruby"

t.upcase! # => "RUBY"

s # => "RUBY"

Page 19: Ruby初級者向けレッスン 47回 ─── 文字列

破壊 (5)

s = "ruby" s ruby-

t = s t ��

��

t.upcase!

Page 20: Ruby初級者向けレッスン 47回 ─── 文字列

破壊 (6)

s = "ruby" s RUBY-

t = s t ��

��

t.upcase!

Page 21: Ruby初級者向けレッスン 47回 ─── 文字列

演習問題 0今日のレッスンで分からなかったこと、疑問に思ったことをグループで話し合ってみよう。

Page 22: Ruby初級者向けレッスン 47回 ─── 文字列

演習問題 1文字列の

1. 行数2. 単語数3. 文字数4. バイト数

を数えてみよう。

Page 23: Ruby初級者向けレッスン 47回 ─── 文字列

演習問題 2文字列の

1. 単語の出現回数2. 文字の出現回数

を数えてみよう。

Page 24: Ruby初級者向けレッスン 47回 ─── 文字列

演習問題 3こにんちは みさなん おんげき ですか ? わしたは げんき です 。この ぶしんょう は イリギス の ケブンッリジ だがいくの けきんゅう の けっか にげんん は もじ を にしんき するとき その さしいょ と さいご の もさじえ あてっれいば じんゅばん は めゃちちくゃ でも ちんゃと よめる と いう けきんゅう に もづといて わざと もじの じんゅばん を いかれえて あまりす 。 どでうす ? ちんゃと よちめゃう でしょ ?

ちんゃと よためら はのんう よしろく

Page 25: Ruby初級者向けレッスン 47回 ─── 文字列

自己紹介• 名前 (ニックネーム)

• 普段の仕事・研究内容・代表作• Ruby歴・コンピュータ歴• 勉強会に来た目的• などなど

Page 26: Ruby初級者向けレッスン 47回 ─── 文字列

参考• ケンブリッジ例文

https://gist.github.com/higaki/8147246

• 解答例https://github.com/higaki/

learn ruby kansai 59

• るりまhttp://doc.ruby-lang.org/ja/