Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
はじめてのRuby 第14章 / Ruby Practice 14
Search
muttan
December 09, 2016
Programming
0
110
はじめてのRuby 第14章 / Ruby Practice 14
muttan
December 09, 2016
Tweet
Share
More Decks by muttan
See All by muttan
さわやか待ち時間LINE botを作った話 / Sawayaka LINE bot
bath_poo_
0
97
コンテナ開発入門 1回目/Introduction to Container Development 1
bath_poo_
0
130
ISUCONってなんだ / What is ISUCON
bath_poo_
0
310
Web技術の基本 8回目 / Introduction to Web technologies 8th class
bath_poo_
0
160
Web技術の基本 7回目 / Introduction to Web technologies 7th class
bath_poo_
0
140
Web技術の基本 6回目 / Introduction to Web technologies 6th class
bath_poo_
1
230
Web技術の基本 5回目 / Introduction to Web technologies 5th class
bath_poo_
0
110
Web技術の基本 4回目 / Introduction to Web technologies 4th class
bath_poo_
0
190
Web技術の基本 3回目 / Introduction to Web technologies 3rd class
bath_poo_
0
230
Other Decks in Programming
See All in Programming
マルチモジュールにおけるテスト最適化
fxwx23
0
210
What you can do with Ruby on WebAssembly
kateinoigakukun
0
170
Ruby Parser progress report 2024
yui_knk
2
230
Architecture Decision Record (ADR)
nearme_tech
PRO
1
690
rbs-inlineを導入してYARDからRBSに移行する
euglena1215
1
290
Shinjuku.rb#95:心の技術書紹介
free_world21
1
110
いまから追い上げる、Jetpack Compose トレーニング
nyafunta9858
0
590
Securify_エンジニア採用資料
3shake
0
100
Perl 5 OOP機構30年史 - Perl 5's OOP Mechanism over the past 30 years
moznion
0
270
Jakarta EE meets AI
ivargrimstad
0
390
Pythonで改めて考える「クラス(class)」の使いどころ
os1ma
1
470
Modular Monolith Go Server with GraphQL Federation + gRPC
110y
1
580
Featured
See All Featured
It's Worth the Effort
3n
182
27k
Raft: Consensus for Rubyists
vanstee
135
6.5k
10 Git Anti Patterns You Should be Aware of
lemiorhan
653
58k
Navigating Team Friction
lara
183
13k
For a Future-Friendly Web
brad_frost
174
9.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
278
13k
Faster Mobile Websites
deanohume
304
30k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.2k
Designing Experiences People Love
moore
138
23k
The Art of Programming - Codeland 2020
erikaheidi
48
13k
Typedesign – Prime Four
hannesfritz
39
2.3k
Transcript
ͨͷ͍͠Ruby ୈ14ষ
ͨͷ͍͠ ‹(^_^o)›
Ruby
ୈ14ষ
ୈ14ষ StringΫϥε
14.1 จࣈྻΛ࡞Δ
14.1 จࣈྻΛ࡞Δ • Ұ൪؆୯ͳจࣈྻΦϒδΣΫτͷ࡞Γํ, ʮ” “ʯ͔ʮ’ ‘ʯͰғΉํ๏͕͋Δ. • “ “ͱ’
‘ͷҧ͍, ‘ ‘ʢγϯάϧΫΥʔςʔγϣ ϯʣͰғΜͩ߹Raw string literalʹͳΔ. ʢҰ෦ྫ֎ΞϦʣ
14.1 จࣈྻΛ࡞Δ • μϒϧΫΥʔςʔγϣϯͰғ·Εͨจࣈྻ Ͱʮ#{ม}ʯͱ͢Δͱ, ෦ͷมΛల։͢Δ ͜ͱ͕Ͱ͖Δ.ʢࣜల։ͱ͍͏ʣ • μϒϧΫΥʔςʔγϣϯͰғΜͩจࣈྻͰ, ΤεέʔϓγʔέϯεΛར༻͢Δ͜ͱ͕Ͱ͖
Δ.ʢP276ࢀরʣ
14.1.1 %Q, %qΛ͏ • ʮ“ʯʮ’ʯΛͬͨจࣈྻΛ࡞Γ͍ͨ࣌, ʮ”ʯʮ’ʯΛΤεέʔϓ͢ΔΑΓ%Q%q Λͬͨ΄͏͕؆୯ʹॻ͘͜ͱ͕Ͱ͖Δ. •
%Qʮ””ʯ, %qʮ’’ʯͰғͬͨ߹ͱಉ
14.1.1 %Q, %qΛ͏ • ʮ“ʯʮ’ʯΛͬͨจࣈྻΛ࡞Γ͍ͨ࣌, ʮ”ʯʮ’ʯΛΤεέʔϓ͢ΔΑΓ%Q%q Λͬͨ΄͏͕؆୯ʹॻ͘͜ͱ͕Ͱ͖Δ. •
%Qʮ””ʯ, %qʮ’’ʯͰғͬͨ߹ͱಉ
14.1.2 ώΞυΩϡϝϯτΛ͏ • ʮ<<~ʯΛͬͯจࣈྻΛ࡞Δͷ. • վߦΛؚΉ͍จࣈྻΛ࡞Δͱ͖ʹศར. • ҎԼͷΑ͏ͳϑΥʔϚοτͰੜ͢Δ. dlऴྃͷจࣈྻz ஔ͖͑Δจࣈྻ
ऴྃͷه߸
14.1.2 ώΞυΩϡϝϯτΛ͏ • ίʔυྫ • <<~ͷޙΖʹॻ͘ऴྃͷه߸, ʮ””ʯͱʮ’’ʯ ͲͪΒͰྑ͍.
ॻ͔ͳ͔ͬͨ߹ʮ””ʯͰ ॻ͍ͨ͜ͱʹ͞ΕΔ.
14.1.2 ώΞυΩϡϝϯτΛ͏ • ʮ””ʯͱʮ’’ʯͷҧ͍, จࣈྻͷಛघจࣈ ࣜදݱ͕ల։͞ΕΔ͔Ͳ͏͔.
14.1.2 ώΞυΩϡϝϯτΛ͏ • ώΞυΩϡϝϯτΛมʹೖ͢ΔʹҎԼ ͷΑ͏ʹ͢Δ.
14.1.4 ʮ``ʯΛ͏ • ʮ`ίϚϯυ`ʯͷܗࣜͰίϚϯυͷඪ४ग़ྗΛ ड͚औͬͯจࣈྻΦϒδΣΫτʹ͢Δ͜ͱ͕ Ͱ͖Δ. • lsͷ݁Ռcatͷ݁ՌΛදࣔ͢Δྫ
ʲίϥϜʳprintfͱsprintf • printfϝιου, ϑΥʔϚοτʹैͬͯจࣈྻΛੜ ͠ग़ྗ͢Δ. • sprintfϑΥʔϚοτʹैͬͨจࣈྻΛฦ͢. • formatʮˋจࣈʯͱ͍͏ܗࣜͰͲͷΑ͏ʹද͢ͷ
͔Λࢦఆ͢Δ. TQSJOUG GPSNBU< BSH< ʜ>> TQSJOUG GPSNBU< BSH< ʜ>>
ʲίϥϜʳprintfͱsprintf • ίʔυྫ • sprintfformatͱ͔͚Δ.
ʲίϥϜʳprintfͱsprintf • ॻࣜͷࢦఆ, ʮˋࢦࣔࢠʯͷܗࣜͰߦ͏. • ࢦࣔࢠશ෦ॻ͖͖Εͳ͍ͷͰ, P281ҎԼ ͷϦϑΝϨϯεΛࢀর https://docs.ruby-lang.org/ja/2.0.0/doc/ print_format.html
14.2 จࣈྻͷ͞ΛಘΔ
14.2 จࣈྻͷ͞ΛಘΔ • จࣈྻͷ͞ΛಘΔʹ, sizeϝιου͔length ϝιουΛར༻͢Δ.
• bytesizeόΠτΛฦ͢.
14.2 จࣈྻͷ͞ΛಘΔ • จࣈྻ͕ۭͰ͋Δ͔Ͳ͏͔empty?ϝιου ΛͬͯௐΔ͜ͱ͕Ͱ͖Δ.
14.3 จࣈྻͷΠϯσοΫε
14.3 จࣈྻͷΠϯσοΫε • จࣈྻதͷಛఆͷҐஔͷจࣈΛऔΓग़͢ʹ, ྻͱಉ༷ΠϯσοΫεΛࢦఆ͢Δ.
14.4 จࣈྻΛͭͳ͛Δ
14.4 จࣈྻΛͭͳ͛Δ • จࣈྻΛͭͳ͛Δํ๏2ͭ͋Δ. 1. 2ͭͷจࣈྻΛͭͳ͛ͨ৽͍͠จࣈྻΛ࡞ Δ. 2. ࠓݱࡏͷจࣈྻʹର͚ͯ͠Ճ͍͑ͯจ ࣈྻʹ͢Δ.
14.4 จࣈྻΛͭͳ͛Δ 1. 2ͭͷจࣈྻΛͭͳ͛ͨ৽͍͠จࣈྻΛ࡞Δ. l)FMMP l l8PSMEz IFMMP XPSME TUSIFMMP
XPSME l)FMMP l l8PSMEz IFMMP XPSME l)FMMP 8PSMEl TUS ৽ن࡞
14.4 จࣈྻΛͭͳ͛Δ 2. ࠓݱࡏͷจࣈྻʹର͚ͯ͠Ճ͍͑ͯจࣈ ྻʹ͢Δ. l)FMMP l l8PSMEz IFMMP XPSME
IFMMPXPSME l8PSMEz IFMMP XPSME l)FMMP 8PSMEl ॻ͖͑ΒΕΔ
14.4 จࣈྻΛͭͳ͛Δ • ৽͍͠จࣈྻΦϒδΣΫτΛੜ͢Δʹ, +ϝιουΛར༻͢Δ.
14.4 จࣈྻΛͭͳ͛Δ • ͢Ͱʹ͋Δจࣈྻʹͭͳ͛Δʹ, <<ϝιου or concatϝιουΛ͏. มIFMMPͷঢ়ଶ͕ॳظͱ ҟͳ͍ͬͯΔ͜ͱ͕Θ͔Δ
14.5 จࣈྻΛൺֱ͢Δ
14.5 จࣈྻΛൺֱ͢Δ • จࣈྻ͕ಉ͔͡Ͳ͏͔ΛௐΔʹɺʮ==ʯor ʮ!=ʯΛར༻͢Δ. • ࣅ͍ͯΔจࣈྻΛ୳͚ͨ͠ΕRegexpͬͨ΄͏
͕͍͍Ͱ͠ΐ͏.
14.5.1 จࣈྻͷେখൺֱ • จࣈྻʹେখ͕ؔ͋Δ.ʢจࣈίʔυॱͱ ͍͏֓೦͕͋Δʣ • ຊޠͷࣙॻॱͱҟͳΔͷͰҙ.ʢྫ͑ ʮ͔͚ʯʮ͕͚ʯʮ͔͜ʯΛฒସ͑ͨ࣌, RubyͰʮ͔͚ʯʮ͔͜ʯʮ͕͚ʯͷॱʹͳ Δ.
14.6 จࣈྻΛׂ͢Δ
14.6 จࣈྻΛׂ͢Δ • ಛఆͷจࣈͰจࣈྻΛׂ͢Δʹ, splitϝιουΛ͏ͱྑ͍. • ΦϒδΣΫτ.split(“۠Γจࣈ”)ͱ͢Δͱ, ۠ ΓจࣈͰׂ͠ྻΦϒδΣΫτΛฦ͢.
14.7 վߦจࣈͷѻ͍ํ
14.7 վߦจࣈͷѻ͍ํ • ඪ४ೖྗ͔ΒจࣈྻΛಡΈࠐΜͩ߹ͳͲ, จ ࣈྻͷඌʹվߦจࣈ͕͘͜ͱ͕͋Δ. • ͜ͷվߦจࣈ͕अຐͳ߹, chopchomp ͱݴͬͨϝιουΛ͏͜ͱͰ,
ඌͷվߦจ ࣈΛऔΓ͏͜ͱ͕Ͱ͖Δ.
14.7 վߦจࣈͷѻ͍ํ • վߦจࣈΛऔΓআ͘ϝιουҰཡ • chopจࣈͷछྨؔͳ͘ඌͷ1จࣈΛ Δ.ʢchompվߦจࣈͷΈʣ
ඌΛඞͣจࣈΔ վߦ͕͋Δ߹ͷΈ Δ ඇഁյత DIPQ DIPNQ ഁյత DIPQ DIPNQ
14.7 վߦจࣈͷѻ͍ํ • chop, chompͷྫ
14.7 վߦจࣈͷѻ͍ํ • each_lineϝιουͰಡΈࠐΜͩߦΛॲཧ͢Δ ߹, chomp!ͰվߦจࣈΛམͱ͢ͷ͕ৗख ஈΒ͍͠.
14.8 จࣈྻͷݕࡧͱஔ
14.8.1 จࣈྻͷݕࡧ • จࣈྻͷதʹಛఆͷจࣈྻ͕ଘࡏ͍ͯ͠Δ͔ௐ Δʹ, indexϝιου ͘͠ rindexϝ ιουΛ͏.
• rindexͷrӈଆ͔Β୳ࡧ͢Δͱ͍͏ҙຯ
14.8.1 จࣈྻͷݕࡧ • indexϝιουͱrindexϝιου, ୳͢จࣈ ྻ͕ݟ͔ͭͬͨ߹Ұகͨ͠෦ͷઌ಄Π ϯσοΫεΛฦ͢. • ݟ͔ͭΒͳ͔ͬͨ߹nilΛฦ͢.
14.8.1 จࣈྻͷݕࡧ • จࣈྻதʹؚ·Ε͍ͯΔ͔Ͳ͏͔͚ͩௐͨ ͍ʢΠϯσοΫεෆཁʣ߹, include?ϝ ιουΛ͏ͱྑ͍.
14.9 จࣈྻͱྻͰڞ௨͢Δϝιου
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Ͱஔ͖͑Δ
14.9.1 ΠϯσοΫεૢ࡞ʹؔ͢Δϝιου • ஔ͖͑ΔൣғΛΠϯσοΫεͰͳ͘όΠτ ୯ҐͰࢦఆ͍ͨ͠߹, bytesliceϝιου Λ͏. • byteslice(nth, len),
nthόΠτ͔Β͞len ͷจࣈྻΛΓग़͢.
14.9.1 ΠϯσοΫεૢ࡞ʹؔ͢Δϝιου • s.slice!(n) s.slice!(n..m) s.slice!(n, len) จࣈྻͷҰ෦ΛΔ. ͬͨ෦͕ϝιουͷ ฦΓͱͳΔ.
14.9.2 EnumratorΦϒδΣΫτΛฦ͢ϝιου • each_lineϝιουeach_byteϝιουͳͲ ϒϩοΫΛ͞ͳ͍߹EnumratorΦϒ δΣΫτ͕ฦΔ. • EnumratorΦϒδΣΫτ͕ฦΔͱ͍͏͜ͱ, mapͱ͔͑ΔͶ.
14.9.2 EnumratorΦϒδΣΫτΛฦ͢ϝιου • ίʔυྫ
14.9.3 ࿈݁ٯॱʹؔ͢Δϝιου • s.concat(s2) s + s2 จࣈྻΛͭͳ͗߹ΘͤΔ.
14.9.3 ࿈݁ٯॱʹؔ͢Δϝιου • s.delete(str) s.delete(str) จࣈྻs͔Βstrʹ֘͢Δ෦ΛऔΓআ͘
14.9.3 ࿈݁ٯॱʹؔ͢Δϝιου • s.reverse s.reverse! จࣈྻsΛٯॱʹฒସ͑Δ.
14.10 ͦͷଞͷϝιου
14.10 ͦͷଞͷϝιου • s.strip s.strip! จࣈྻsͷલޙͷۭനจࣈΛআڈ͢Δϝιου.
14.10 ͦͷଞͷϝιου • s.upcase s.upcase! খจࣈΛେจࣈʹஔ͖͑Δϝιου.
14.10 ͦͷଞͷϝιου • s.downcase s.downcase! େจࣈΛখจࣈʹஔ͖͑Δϝιου.
14.10 ͦͷଞͷϝιου • s.swapcase s.swapcase! খจࣈΛେจࣈʹ, େจࣈΛখจࣈʹ͢Δ.
14.10 ͦͷଞͷϝιου • s.capitalize s.capitalize! 1จࣈΛେจࣈʹͯ͠, ͦΕҎ߱Λখจࣈʹ ͢Δ.
14.10 ͦͷଞͷϝιου • s.tr s.tr! UnixίϚϯυͷtrʹ༝དྷ͢ΔϝιουͰ, จࣈ Λஔ͖͑ΔͨΊʹ͏.
·ͱΊ
·ͱΊ • จࣈྻʮ””ʯor ʮ’’ʯͰੜ͢Δ. • %Q, %qͰੜՄೳ. • จࣈྻʹର͢Δૢ࡞, ྻͱಉ͡༻ʹͰ͖Δ
ͷ͕ଟ͍.