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
150
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
230
ISUCONってなんだ / What is ISUCON
bath_poo_
0
400
Web技術の基本 8回目 / Introduction to Web technologies 8th class
bath_poo_
0
240
Web技術の基本 7回目 / Introduction to Web technologies 7th class
bath_poo_
0
220
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
250
Web技術の基本 3回目 / Introduction to Web technologies 3rd class
bath_poo_
0
280
Other Decks in Programming
See All in Programming
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
570
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
330
FreeBSDでZabbixを動かす
kenkino
0
350
Simple Storage Service(S3) is not simple
iwatsukayura
0
120
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
330
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
4.8k
速習iPhone Duo対応
yuukiw00w
2
930
Turning Architecture into Unit Tests in the AI Era (NSSpain XIV)
steliosf
PRO
1
120
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
9.4k
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
750
iOSDC2026登壇資料.pdf
riofujimon
0
200
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
590
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
620
Marketing to machines
jonoalderson
1
5.8k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
350
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
520
How to build a perfect <img>
jonoalderson
1
6.1k
Building the Perfect Custom Keyboard
takai
2
890
sira's awesome portfolio website redesign presentation
elsirapls
0
430
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
380
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Side Projects
sachag
456
43k
The Invisible Side of Design
smashingmag
301
52k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
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ͰੜՄೳ. • จࣈྻʹର͢Δૢ࡞, ྻͱಉ͡༻ʹͰ͖Δ
ͷ͕ଟ͍.