Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
はじめてのRuby 第14章 / Ruby Practice 14
Search
muttan
December 09, 2016
Programming
160
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
はじめてのRuby 第14章 / Ruby Practice 14
muttan
December 09, 2016
More Decks by muttan
See All by muttan
さわやか待ち時間LINE botを作った話 / Sawayaka LINE bot
bath_poo_
0
140
コンテナ開発入門 1回目/Introduction to Container Development 1
bath_poo_
0
250
ISUCONってなんだ / What is ISUCON
bath_poo_
0
410
Web技術の基本 8回目 / Introduction to Web technologies 8th class
bath_poo_
0
250
Web技術の基本 7回目 / Introduction to Web technologies 7th class
bath_poo_
0
240
Web技術の基本 6回目 / Introduction to Web technologies 6th class
bath_poo_
1
300
Web技術の基本 5回目 / Introduction to Web technologies 5th class
bath_poo_
0
180
Web技術の基本 4回目 / Introduction to Web technologies 4th class
bath_poo_
0
260
Web技術の基本 3回目 / Introduction to Web technologies 3rd class
bath_poo_
0
280
Other Decks in Programming
See All in Programming
社内AIエージェント「Askワンバン」における コストチューニングの取り組み
t0yohei
0
160
[DroidKnights 2026] Workflow AX: From Auto-Documented Policies to E2E Testing
raeminkang
0
540
AI時代のFlutter品質設計 — アプリ品質を守るQuality Layers
omatty198
0
360
Kawaiicon: Kubernetes, it's no longer cool, but let's secure it anyway!
barnbarn
0
130
AIが生成したコードは読むべきか?抽象化設計とコードの品質保証 / abstraction-design-and-quality
minodriven
16
8.9k
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
290
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
4
3.6k
Distance field of Julia set
kinakomoti321
0
310
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
13
5.8k
baseline으로 마이그레이션, 리팩토링 안전하게 맡기기
fornewid
1
960
Web3Dライブラリを作ってVue Custom Rendererの仕組みを理解しよう / lets learn vue custom renderer by making 3d library
drumath2237
1
130
flutter_test のその先へ — Flutter アプリの LLM 機能に「評価」という品質保証を
kosukesaigusa
0
200
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
96
14k
BBQ
matthewcrist
90
10k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
350
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
670
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
600
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Paper Plane (Part 1)
katiecoart
PRO
2
12k
Faster Mobile Websites
deanohume
310
32k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
880
Ethics towards AI in product and experience design
skipperchong
2
460
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ͰੜՄೳ. • จࣈྻʹର͢Δૢ࡞, ྻͱಉ͡༻ʹͰ͖Δ
ͷ͕ଟ͍.