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
130
はじめての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
110
コンテナ開発入門 1回目/Introduction to Container Development 1
bath_poo_
0
170
ISUCONってなんだ / What is ISUCON
bath_poo_
0
350
Web技術の基本 8回目 / Introduction to Web technologies 8th class
bath_poo_
0
190
Web技術の基本 7回目 / Introduction to Web technologies 7th class
bath_poo_
0
160
Web技術の基本 6回目 / Introduction to Web technologies 6th class
bath_poo_
1
260
Web技術の基本 5回目 / Introduction to Web technologies 5th class
bath_poo_
0
140
Web技術の基本 4回目 / Introduction to Web technologies 4th class
bath_poo_
0
220
Web技術の基本 3回目 / Introduction to Web technologies 3rd class
bath_poo_
0
250
Other Decks in Programming
See All in Programming
Flutter with Dart MCP: All You Need - 박제창 2025 I/O Extended Busan
itsmedreamwalker
0
150
[FEConf 2025] 모노레포 절망편, 14개 레포로 부활하기까지 걸린 1년
mmmaxkim
0
1.6k
旅行プランAIエージェント開発の裏側
ippo012
2
890
ユーザーも開発者も悩ませない TV アプリ開発 ~Compose の内部実装から学ぶフォーカス制御~
taked137
0
140
詳解!defer panic recover のしくみ / Understanding defer, panic, and recover
convto
0
230
testingを眺める
matumoto
1
140
Cache Me If You Can
ryunen344
2
650
AWS発のAIエディタKiroを使ってみた
iriikeita
1
180
Design Foundational Data Engineering Observability
sucitw
3
190
知っているようで知らない"rails new"の世界 / The World of "rails new" You Think You Know but Don't
luccafort
PRO
1
100
Updates on MLS on Ruby (and maybe more)
sylph01
1
180
AIでLINEスタンプを作ってみた
eycjur
1
230
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Become a Pro
speakerdeck
PRO
29
5.5k
Six Lessons from altMBA
skipperchong
28
4k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
It's Worth the Effort
3n
187
28k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
51
5.6k
Making Projects Easy
brettharned
117
6.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
Scaling GitHub
holman
463
140k
Producing Creativity
orderedlist
PRO
347
40k
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ͰੜՄೳ. • จࣈྻʹର͢Δૢ࡞, ྻͱಉ͡༻ʹͰ͖Δ
ͷ͕ଟ͍.