はじめてのRuby 第14章 / Ruby Practice 14

Fd09da0d9751bb7875ef4ff7e6201860?s=47 muttan
December 09, 2016

はじめてのRuby 第14章 / Ruby Practice 14

Fd09da0d9751bb7875ef4ff7e6201860?s=128

muttan

December 09, 2016
Tweet

Transcript

  1. ͨͷ͍͠Ruby ୈ14ষ

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

  3. Ruby

  4. ୈ14ষ

  5. ୈ14ষ StringΫϥε

  6. 14.1 จࣈྻΛ࡞Δ

  7. 14.1 จࣈྻΛ࡞Δ • Ұ൪؆୯ͳจࣈྻΦϒδΣΫτͷ࡞Γํ͸, ʮ” “ʯ͔ʮ’ ‘ʯͰғΉํ๏͕͋Δ. • “ “ͱ’

    ‘ͷҧ͍͸, ‘ ‘ʢγϯάϧΫΥʔςʔγϣ ϯʣͰғΜͩ৔߹͸Raw string literalʹͳΔ. ʢҰ෦ྫ֎ΞϦʣ
  8. 14.1 จࣈྻΛ࡞Δ • μϒϧΫΥʔςʔγϣϯͰғ·Εͨจࣈྻ಺ Ͱʮ#{ม਺}ʯͱ͢Δͱ, ಺෦ͷม਺Λల։͢Δ ͜ͱ͕Ͱ͖Δ.ʢࣜల։ͱ͍͏ʣ • μϒϧΫΥʔςʔγϣϯͰғΜͩจࣈྻͰ͸, ΤεέʔϓγʔέϯεΛར༻͢Δ͜ͱ͕Ͱ͖

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

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

    %Q͸ʮ””ʯ, %q͸ʮ’’ʯͰғͬͨ৔߹ͱಉ౳
  11. 14.1.2 ώΞυΩϡϝϯτΛ࢖͏ • ʮ<<~ʯΛ࢖ͬͯจࣈྻΛ࡞Δ΋ͷ. • վߦΛؚΉ௕͍จࣈྻΛ࡞Δͱ͖ʹศར. • ҎԼͷΑ͏ͳϑΥʔϚοτͰੜ੒͢Δ. dlऴྃͷจࣈྻz ஔ͖׵͑Δจࣈྻ

    ऴྃͷه߸
  12. 14.1.2 ώΞυΩϡϝϯτΛ࢖͏ • ίʔυྫ
 
 
 • <<~ͷޙΖʹॻ͘ऴྃͷه߸͸, ʮ””ʯͱʮ’’ʯ ͲͪΒͰ΋ྑ͍.

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

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

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


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

    ͔Λࢦఆ͢Δ. TQSJOUG GPSNBU< BSH< ʜ>>  TQSJOUG GPSNBU< BSH< ʜ>>
  17. ʲίϥϜʳprintfͱsprintf • ίʔυྫ
 
 • sprintf͸formatͱ΋͔͚Δ.

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

  19. 14.2 จࣈྻͷ௕͞ΛಘΔ

  20. 14.2 จࣈྻͷ௕͞ΛಘΔ • จࣈྻͷ௕͞ΛಘΔʹ͸, sizeϝιου͔length ϝιουΛར༻͢Δ.
 
 
 
 


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

  22. 14.3 จࣈྻͷΠϯσοΫε

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

  24. 14.4 จࣈྻΛͭͳ͛Δ

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

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

    XPSME l)FMMP l l8PSMEz IFMMP XPSME l)FMMP 8PSMEl TUS ৽ن࡞੒
  27. 14.4 จࣈྻΛͭͳ͛Δ 2. ࠓݱࡏͷจࣈྻʹରͯ͠෇͚Ճ͑ͯ௕͍จࣈ ྻʹ͢Δ.
 l)FMMP l l8PSMEz IFMMP XPSME

    IFMMPXPSME l8PSMEz IFMMP XPSME l)FMMP 8PSMEl ॻ͖׵͑ΒΕΔ
  28. 14.4 จࣈྻΛͭͳ͛Δ • ৽͍͠จࣈྻΦϒδΣΫτΛੜ੒͢Δʹ͸, 
 +ϝιουΛར༻͢Δ.

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

  30. 14.5 จࣈྻΛൺֱ͢Δ

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

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

  33. 14.6 จࣈྻΛ෼ׂ͢Δ

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

  35. 14.7 վߦจࣈͷѻ͍ํ

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

    ຤ඌͷվߦจ ࣈΛऔΓ෷͏͜ͱ͕Ͱ͖Δ.
  37. 14.7 վߦจࣈͷѻ͍ํ • վߦจࣈΛऔΓআ͘ϝιουҰཡ
 
 
 
 • chop͸จࣈͷछྨؔ܎ͳ͘຤ඌͷ1จࣈΛ࡟ Δ.ʢchomp͸վߦจࣈͷΈʣ

    ຤ඌΛඞͣจࣈ࡟Δ վߦ͕͋Δ৔߹ͷΈ ࡟Δ ඇഁյత DIPQ DIPNQ ഁյత DIPQ DIPNQ
  38. 14.7 վߦจࣈͷѻ͍ํ • chop, chompͷྫ

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

  40. 14.8 จࣈྻͷݕࡧͱஔ׵

  41. 14.8.1 จࣈྻͷݕࡧ • จࣈྻͷதʹಛఆͷจࣈྻ͕ଘࡏ͍ͯ͠Δ͔ௐ ΂Δʹ͸, indexϝιου ΋͘͠͸ rindexϝ ιουΛ࢖͏.
 


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

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

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

  45. 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Ͱஔ͖׵͑Δ
 

  46. 14.9.1
 ΠϯσοΫεૢ࡞ʹؔ͢Δϝιου • ஔ͖׵͑ΔൣғΛΠϯσοΫεͰͳ͘όΠτ ୯ҐͰࢦఆ͍ͨ͠৔߹͸, bytesliceϝιου Λ࢖͏.
 • byteslice(nth, len)͸,

    nthόΠτ໨͔Β௕͞len ͷจࣈྻΛ੾Γग़͢.
  47. 14.9.1
 ΠϯσοΫεૢ࡞ʹؔ͢Δϝιου • s.slice!(n)
 s.slice!(n..m)
 s.slice!(n, len)
 จࣈྻͷҰ෦Λ࡟Δ. ࡟ͬͨ෦෼͕ϝιουͷ ฦΓ஋ͱͳΔ.

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

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

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


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


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


  53. 14.10 ͦͷଞͷϝιου

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

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


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


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


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


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

  60. ·ͱΊ

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

    ΋ͷ͕ଟ͍.