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
120
はじめての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
100
コンテナ開発入門 1回目/Introduction to Container Development 1
bath_poo_
0
150
ISUCONってなんだ / What is ISUCON
bath_poo_
0
330
Web技術の基本 8回目 / Introduction to Web technologies 8th class
bath_poo_
0
170
Web技術の基本 7回目 / Introduction to Web technologies 7th class
bath_poo_
0
150
Web技術の基本 6回目 / Introduction to Web technologies 6th class
bath_poo_
1
240
Web技術の基本 5回目 / Introduction to Web technologies 5th class
bath_poo_
0
120
Web技術の基本 4回目 / Introduction to Web technologies 4th class
bath_poo_
0
200
Web技術の基本 3回目 / Introduction to Web technologies 3rd class
bath_poo_
0
240
Other Decks in Programming
See All in Programming
コードを読んで理解するko build
bells17
1
110
苦しいTiDBへの移行を乗り越えて快適な運用を目指す
leveragestech
0
1.2k
CloudRun, Spanner に対する負荷試験の反省と オブザーバビリティによるアプローチ
oyasumipants
1
150
ABEMA iOS 大規模プロジェクトにおける段階的な技術刷新 / ABEMA iOS Technology Upgrade
akkyie
1
240
生成AIで加速するテスト実装 - ロリポップ for Gamersの事例と 生成AIエディタの活用
kinosuke01
0
140
推しメソッドsource_locationのしくみを探る - はじめてRubyのコードを読んでみた
nobu09
2
350
Drawing Heighway’s Dragon- Recursive Function Rewrite- From Imperative Style in Pascal 64 To Functional Style in Scala 3
philipschwarz
PRO
0
150
自力でTTSモデルを作った話
zgock999
0
120
Jasprが凄い話
hyshu
0
180
JAWS Days 2025のインフラ
komakichi
1
270
CDKを使ったPagerDuty連携インフラのテンプレート化
shibuya_shogo
0
120
Jakarta EE meets AI
ivargrimstad
0
620
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
Building Your Own Lightsaber
phodgson
104
6.2k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.3k
Product Roadmaps are Hard
iamctodd
PRO
51
11k
Making Projects Easy
brettharned
116
6k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
Rails Girls Zürich Keynote
gr2m
94
13k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Typedesign – Prime Four
hannesfritz
41
2.5k
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ͰੜՄೳ. • จࣈྻʹର͢Δૢ࡞, ྻͱಉ͡༻ʹͰ͖Δ
ͷ͕ଟ͍.