Slide 1

Slide 1 text

ͨͷ͍͠Ruby ୈ14ষ

Slide 2

Slide 2 text

ͨͷ͍͠ ‹(^_^o)›

Slide 3

Slide 3 text

Ruby

Slide 4

Slide 4 text

ୈ14ষ

Slide 5

Slide 5 text

ୈ14ষ StringΫϥε

Slide 6

Slide 6 text

14.1 จࣈྻΛ࡞Δ

Slide 7

Slide 7 text

14.1 จࣈྻΛ࡞Δ • Ұ൪؆୯ͳจࣈྻΦϒδΣΫτͷ࡞Γํ͸, ʮ” “ʯ͔ʮ’ ‘ʯͰғΉํ๏͕͋Δ. • “ “ͱ’ ‘ͷҧ͍͸, ‘ ‘ʢγϯάϧΫΥʔςʔγϣ ϯʣͰғΜͩ৔߹͸Raw string literalʹͳΔ. ʢҰ෦ྫ֎ΞϦʣ

Slide 8

Slide 8 text

14.1 จࣈྻΛ࡞Δ • μϒϧΫΥʔςʔγϣϯͰғ·Εͨจࣈྻ಺ Ͱʮ#{ม਺}ʯͱ͢Δͱ, ಺෦ͷม਺Λల։͢Δ ͜ͱ͕Ͱ͖Δ.ʢࣜల։ͱ͍͏ʣ • μϒϧΫΥʔςʔγϣϯͰғΜͩจࣈྻͰ͸, ΤεέʔϓγʔέϯεΛར༻͢Δ͜ͱ͕Ͱ͖ Δ.ʢP276ࢀরʣ

Slide 9

Slide 9 text

14.1.1 %Q, %qΛ࢖͏ • ʮ“ʯ΍ʮ’ʯΛ࢖ͬͨจࣈྻΛ࡞Γ͍ͨ࣌͸, ʮ”ʯ΍ʮ’ʯΛΤεέʔϓ͢ΔΑΓ΋%Q΍%q Λ࢖ͬͨ΄͏͕؆୯ʹॻ͘͜ͱ͕Ͱ͖Δ.
 
 
 • %Q͸ʮ””ʯ, %q͸ʮ’’ʯͰғͬͨ৔߹ͱಉ౳

Slide 10

Slide 10 text

14.1.1 %Q, %qΛ࢖͏ • ʮ“ʯ΍ʮ’ʯΛ࢖ͬͨจࣈྻΛ࡞Γ͍ͨ࣌͸, ʮ”ʯ΍ʮ’ʯΛΤεέʔϓ͢ΔΑΓ΋%Q΍%q Λ࢖ͬͨ΄͏͕؆୯ʹॻ͘͜ͱ͕Ͱ͖Δ.
 
 
 • %Q͸ʮ””ʯ, %q͸ʮ’’ʯͰғͬͨ৔߹ͱಉ౳

Slide 11

Slide 11 text

14.1.2 ώΞυΩϡϝϯτΛ࢖͏ • ʮ<<~ʯΛ࢖ͬͯจࣈྻΛ࡞Δ΋ͷ. • վߦΛؚΉ௕͍จࣈྻΛ࡞Δͱ͖ʹศར. • ҎԼͷΑ͏ͳϑΥʔϚοτͰੜ੒͢Δ. dlऴྃͷจࣈྻz ஔ͖׵͑Δจࣈྻ ऴྃͷه߸

Slide 12

Slide 12 text

14.1.2 ώΞυΩϡϝϯτΛ࢖͏ • ίʔυྫ
 
 
 • <<~ͷޙΖʹॻ͘ऴྃͷه߸͸, ʮ””ʯͱʮ’’ʯ ͲͪΒͰ΋ྑ͍. ॻ͔ͳ͔ͬͨ৔߹͸ʮ””ʯͰ ॻ͍ͨ͜ͱʹ͞ΕΔ.

Slide 13

Slide 13 text

14.1.2 ώΞυΩϡϝϯτΛ࢖͏ • ʮ””ʯͱʮ’’ʯͷҧ͍͸, จࣈྻ಺ͷಛघจࣈ ΍ࣜදݱ͕ల։͞ΕΔ͔Ͳ͏͔.

Slide 14

Slide 14 text

14.1.2 ώΞυΩϡϝϯτΛ࢖͏ • ώΞυΩϡϝϯτΛม਺ʹ୅ೖ͢Δʹ͸ҎԼ ͷΑ͏ʹ͢Δ.

Slide 15

Slide 15 text

14.1.4 ʮ``ʯΛ࢖͏ • ʮ`ίϚϯυ`ʯͷܗࣜͰίϚϯυͷඪ४ग़ྗΛ ड͚औͬͯจࣈྻΦϒδΣΫτʹ͢Δ͜ͱ͕ Ͱ͖Δ. • lsͷ݁Ռ΍catͷ݁ՌΛදࣔ͢Δྫ


Slide 16

Slide 16 text

ʲίϥϜʳprintfͱsprintf • printfϝιου͸, ϑΥʔϚοτʹैͬͯจࣈྻΛੜ ੒͠ग़ྗ͢Δ. • sprintf͸ϑΥʔϚοτʹैͬͨจࣈྻΛฦ͢.
 
 • format͸ʮˋจࣈʯͱ͍͏ܗࣜͰͲͷΑ͏ʹද͢ͷ ͔Λࢦఆ͢Δ. TQSJOUG GPSNBU< BSH< ʜ>>  TQSJOUG GPSNBU< BSH< ʜ>>

Slide 17

Slide 17 text

ʲίϥϜʳprintfͱsprintf • ίʔυྫ
 
 • sprintf͸formatͱ΋͔͚Δ.

Slide 18

Slide 18 text

ʲίϥϜʳprintfͱsprintf • ॻࣜͷࢦఆ͸, ʮˋࢦࣔࢠʯͷܗࣜͰߦ͏. • ࢦࣔࢠ͸શ෦ॻ͖͖Εͳ͍ͷͰ, P281΍ҎԼ ͷϦϑΝϨϯεΛࢀর
 https://docs.ruby-lang.org/ja/2.0.0/doc/ print_format.html

Slide 19

Slide 19 text

14.2 จࣈྻͷ௕͞ΛಘΔ

Slide 20

Slide 20 text

14.2 จࣈྻͷ௕͞ΛಘΔ • จࣈྻͷ௕͞ΛಘΔʹ͸, sizeϝιου͔length ϝιουΛར༻͢Δ.
 
 
 
 
 • bytesize͸όΠτ਺Λฦ͢.

Slide 21

Slide 21 text

14.2 จࣈྻͷ௕͞ΛಘΔ • จࣈྻ͕ۭͰ͋Δ͔Ͳ͏͔͸empty?ϝιου Λ࢖ͬͯௐ΂Δ͜ͱ͕Ͱ͖Δ.

Slide 22

Slide 22 text

14.3 จࣈྻͷΠϯσοΫε

Slide 23

Slide 23 text

14.3 จࣈྻͷΠϯσοΫε • จࣈྻதͷಛఆͷҐஔͷจࣈΛऔΓग़͢ʹ͸, ഑ྻͱಉ༷ΠϯσοΫεΛࢦఆ͢Δ.

Slide 24

Slide 24 text

14.4 จࣈྻΛͭͳ͛Δ

Slide 25

Slide 25 text

14.4 จࣈྻΛͭͳ͛Δ • จࣈྻΛͭͳ͛Δํ๏͸2ͭ͋Δ. 1. 2ͭͷจࣈྻΛͭͳ͛ͨ৽͍͠จࣈྻΛ࡞ Δ. 2. ࠓݱࡏͷจࣈྻʹରͯ͠෇͚Ճ͑ͯ௕͍จ ࣈྻʹ͢Δ.

Slide 26

Slide 26 text

14.4 จࣈྻΛͭͳ͛Δ 1. 2ͭͷจࣈྻΛͭͳ͛ͨ৽͍͠จࣈྻΛ࡞Δ. l)FMMP l l8PSMEz IFMMP XPSME TUSIFMMP XPSME l)FMMP l l8PSMEz IFMMP XPSME l)FMMP 8PSMEl TUS ৽ن࡞੒

Slide 27

Slide 27 text

14.4 จࣈྻΛͭͳ͛Δ 2. ࠓݱࡏͷจࣈྻʹରͯ͠෇͚Ճ͑ͯ௕͍จࣈ ྻʹ͢Δ.
 l)FMMP l l8PSMEz IFMMP XPSME IFMMPXPSME l8PSMEz IFMMP XPSME l)FMMP 8PSMEl ॻ͖׵͑ΒΕΔ

Slide 28

Slide 28 text

14.4 จࣈྻΛͭͳ͛Δ • ৽͍͠จࣈྻΦϒδΣΫτΛੜ੒͢Δʹ͸, 
 +ϝιουΛར༻͢Δ.

Slide 29

Slide 29 text

14.4 จࣈྻΛͭͳ͛Δ • ͢Ͱʹ͋Δจࣈྻʹͭͳ͛Δʹ͸, 
 <<ϝιου or concatϝιουΛ࢖͏. ม਺IFMMPͷঢ়ଶ͕ॳظͱ
 ҟͳ͍ͬͯΔ͜ͱ͕Θ͔Δ

Slide 30

Slide 30 text

14.5 จࣈྻΛൺֱ͢Δ

Slide 31

Slide 31 text

14.5 จࣈྻΛൺֱ͢Δ • จࣈྻ͕ಉ͔͡Ͳ͏͔Λௐ΂Δʹ͸ɺʮ==ʯor ʮ!=ʯΛར༻͢Δ.
 
 
 
 • ࣅ͍ͯΔจࣈྻΛ୳͚ͨ͠Ε͹Regexp࢖ͬͨ΄͏ ͕͍͍Ͱ͠ΐ͏.

Slide 32

Slide 32 text

14.5.1 จࣈྻͷେখൺֱ • จࣈྻʹ͸େখؔ܎͕͋Δ.ʢจࣈίʔυॱͱ ͍͏֓೦͕͋Δʣ
 • ೔ຊޠͷࣙॻॱͱ͸ҟͳΔͷͰ஫ҙ.ʢྫ͑͹ ʮ͔͚ʯʮ͕͚ʯʮ͔͜ʯΛฒ΂ସ͑ͨ࣌, RubyͰ͸ʮ͔͚ʯʮ͔͜ʯʮ͕͚ʯͷॱʹͳ Δ.

Slide 33

Slide 33 text

14.6 จࣈྻΛ෼ׂ͢Δ

Slide 34

Slide 34 text

14.6 จࣈྻΛ෼ׂ͢Δ • ಛఆͷจࣈͰจࣈྻΛ෼ׂ͢Δʹ͸, 
 splitϝιουΛ࢖͏ͱྑ͍. • ΦϒδΣΫτ.split(“۠੾Γจࣈ”)ͱ͢Δͱ, ۠ ੾ΓจࣈͰ෼ׂ͠഑ྻΦϒδΣΫτΛฦ͢.

Slide 35

Slide 35 text

14.7 վߦจࣈͷѻ͍ํ

Slide 36

Slide 36 text

14.7 վߦจࣈͷѻ͍ํ • ඪ४ೖྗ͔ΒจࣈྻΛಡΈࠐΜͩ৔߹ͳͲ, จ ࣈྻͷ຤ඌʹվߦจࣈ͕෇͘͜ͱ͕͋Δ. • ͜ͷվߦจࣈ͕अຐͳ৔߹͸, chop΍chomp ͱݴͬͨϝιουΛ࢖͏͜ͱͰ, ຤ඌͷվߦจ ࣈΛऔΓ෷͏͜ͱ͕Ͱ͖Δ.

Slide 37

Slide 37 text

14.7 վߦจࣈͷѻ͍ํ • վߦจࣈΛऔΓআ͘ϝιουҰཡ
 
 
 
 • chop͸จࣈͷछྨؔ܎ͳ͘຤ඌͷ1จࣈΛ࡟ Δ.ʢchomp͸վߦจࣈͷΈʣ ຤ඌΛඞͣจࣈ࡟Δ վߦ͕͋Δ৔߹ͷΈ ࡟Δ ඇഁյత DIPQ DIPNQ ഁյత DIPQ DIPNQ

Slide 38

Slide 38 text

14.7 վߦจࣈͷѻ͍ํ • chop, chompͷྫ

Slide 39

Slide 39 text

14.7 վߦจࣈͷѻ͍ํ • each_lineϝιουͰಡΈࠐΜͩߦΛॲཧ͢Δ ৔߹, chomp!ͰվߦจࣈΛམͱ͢ͷ͕ৗ౟ख ஈΒ͍͠.

Slide 40

Slide 40 text

14.8 จࣈྻͷݕࡧͱஔ׵

Slide 41

Slide 41 text

14.8.1 จࣈྻͷݕࡧ • จࣈྻͷதʹಛఆͷจࣈྻ͕ଘࡏ͍ͯ͠Δ͔ௐ ΂Δʹ͸, indexϝιου ΋͘͠͸ rindexϝ ιουΛ࢖͏.
 
 
 
 • rindexͷr͸ӈଆ͔Β୳ࡧ͢Δͱ͍͏ҙຯ

Slide 42

Slide 42 text

14.8.1 จࣈྻͷݕࡧ • indexϝιουͱrindexϝιου͸, ୳͢จࣈ ྻ͕ݟ͔ͭͬͨ৔߹͸Ұகͨ͠෦෼ͷઌ಄Π ϯσοΫεΛฦ͢. • ݟ͔ͭΒͳ͔ͬͨ৔߹͸nilΛฦ͢.

Slide 43

Slide 43 text

14.8.1 จࣈྻͷݕࡧ • จࣈྻதʹؚ·Ε͍ͯΔ͔Ͳ͏͔͚ͩௐ΂ͨ ͍ʢΠϯσοΫε͸ෆཁʣ৔߹͸, include?ϝ ιουΛ࢖͏ͱྑ͍.

Slide 44

Slide 44 text

14.9 จࣈྻͱ഑ྻͰڞ௨͢Δϝιου

Slide 45

Slide 45 text

14.9.1
 ΠϯσοΫεૢ࡞ʹؔ͢Δϝιου • s[n] = str (s.slice(n) = str)
 s[n..m] = str (s.slice(n..m) = str)
 s[n, len] = str (s.slice(n, len) = str)
 ࢦఆͨ͠ൣғΛstrͰஔ͖׵͑Δ
 


Slide 46

Slide 46 text

14.9.1
 ΠϯσοΫεૢ࡞ʹؔ͢Δϝιου • ஔ͖׵͑ΔൣғΛΠϯσοΫεͰͳ͘όΠτ ୯ҐͰࢦఆ͍ͨ͠৔߹͸, bytesliceϝιου Λ࢖͏.
 • byteslice(nth, len)͸, nthόΠτ໨͔Β௕͞len ͷจࣈྻΛ੾Γग़͢.

Slide 47

Slide 47 text

14.9.1
 ΠϯσοΫεૢ࡞ʹؔ͢Δϝιου • s.slice!(n)
 s.slice!(n..m)
 s.slice!(n, len)
 จࣈྻͷҰ෦Λ࡟Δ. ࡟ͬͨ෦෼͕ϝιουͷ ฦΓ஋ͱͳΔ.

Slide 48

Slide 48 text

14.9.2
 EnumratorΦϒδΣΫτΛฦ͢ϝιου • each_lineϝιου΍each_byteϝιουͳͲ ͸ϒϩοΫΛ౉͞ͳ͍৔߹͸EnumratorΦϒ δΣΫτ͕ฦΔ. • EnumratorΦϒδΣΫτ͕ฦΔͱ͍͏͜ͱ͸, mapͱ͔࢖͑ΔͶ.

Slide 49

Slide 49 text

14.9.2
 EnumratorΦϒδΣΫτΛฦ͢ϝιου • ίʔυྫ

Slide 50

Slide 50 text

14.9.3 ࿈݁΍ٯॱʹؔ͢Δϝιου • s.concat(s2)
 s + s2
 จࣈྻΛͭͳ͗߹ΘͤΔ.
 


Slide 51

Slide 51 text

14.9.3 ࿈݁΍ٯॱʹؔ͢Δϝιου • s.delete(str)
 s.delete(str)
 จࣈྻs͔Βstrʹ֘౰͢Δ෦෼ΛऔΓআ͘
 


Slide 52

Slide 52 text

14.9.3 ࿈݁΍ٯॱʹؔ͢Δϝιου • s.reverse
 s.reverse!
 จࣈྻsΛٯॱʹฒ΂ସ͑Δ.
 


Slide 53

Slide 53 text

14.10 ͦͷଞͷϝιου

Slide 54

Slide 54 text

14.10 ͦͷଞͷϝιου • s.strip
 s.strip!
 จࣈྻsͷલޙͷۭനจࣈΛআڈ͢Δϝιου.

Slide 55

Slide 55 text

14.10 ͦͷଞͷϝιου • s.upcase
 s.upcase!
 খจࣈΛେจࣈʹஔ͖׵͑Δϝιου.
 
 


Slide 56

Slide 56 text

14.10 ͦͷଞͷϝιου • s.downcase
 s.downcase!
 େจࣈΛখจࣈʹஔ͖׵͑Δϝιου.
 
 


Slide 57

Slide 57 text

14.10 ͦͷଞͷϝιου • s.swapcase
 s.swapcase!
 খจࣈΛେจࣈʹ, େจࣈΛখจࣈʹ͢Δ.
 
 


Slide 58

Slide 58 text

14.10 ͦͷଞͷϝιου • s.capitalize
 s.capitalize!
 1จࣈ໨Λେจࣈʹͯ͠, ͦΕҎ߱Λখจࣈʹ ͢Δ.
 


Slide 59

Slide 59 text

14.10 ͦͷଞͷϝιου • s.tr
 s.tr!
 UnixίϚϯυͷtrʹ༝དྷ͢ΔϝιουͰ, จࣈ Λஔ͖׵͑ΔͨΊʹ࢖͏.

Slide 60

Slide 60 text

·ͱΊ

Slide 61

Slide 61 text

·ͱΊ • จࣈྻ͸ʮ””ʯor ʮ’’ʯͰੜ੒͢Δ. • %Q, %qͰ΋ੜ੒Մೳ. • จࣈྻʹର͢Δૢ࡞͸, ഑ྻͱಉ͡༻ʹͰ͖Δ ΋ͷ͕ଟ͍.