Soumettre la recherche
Mettre en ligne
Rubyで和暦をよみとる
•
0 j'aime
•
1,478 vues
Takashi Ota
Suivre
Rubyで和暦を読み取るときに注意すべきポイントについて調べました.
Lire moins
Lire la suite
Technologie
Formation
Signaler
Partager
Signaler
Partager
1 sur 15
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
カーネル密度推定を用いた店舗情報の可視化
カーネル密度推定を用いた店舗情報の可視化
Kanetaka Heshiki
Siphone coffeemaker okayama-js-1
Siphone coffeemaker okayama-js-1
NISHIMOTO Keisuke
Emacs 使いが Vim を使ってみた(ちょっとだけGit)
Emacs 使いが Vim を使ってみた(ちょっとだけGit)
Yoshiyuki MIYAGI
俺と JAWS-UG と CLI
俺と JAWS-UG と CLI
Daisuke Nagao
オレオレPHPのつくり方
オレオレPHPのつくり方
Ryusuke Sekiyama
PCさえあればいい。
PCさえあればいい。
bleis tift
いい加減に作ったAndroidアプリを放流したった
いい加減に作ったAndroidアプリを放流したった
boiledorange73
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413
博文 斉藤
Recommandé
カーネル密度推定を用いた店舗情報の可視化
カーネル密度推定を用いた店舗情報の可視化
Kanetaka Heshiki
Siphone coffeemaker okayama-js-1
Siphone coffeemaker okayama-js-1
NISHIMOTO Keisuke
Emacs 使いが Vim を使ってみた(ちょっとだけGit)
Emacs 使いが Vim を使ってみた(ちょっとだけGit)
Yoshiyuki MIYAGI
俺と JAWS-UG と CLI
俺と JAWS-UG と CLI
Daisuke Nagao
オレオレPHPのつくり方
オレオレPHPのつくり方
Ryusuke Sekiyama
PCさえあればいい。
PCさえあればいい。
bleis tift
いい加減に作ったAndroidアプリを放流したった
いい加減に作ったAndroidアプリを放流したった
boiledorange73
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413
博文 斉藤
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
Takahiro Okumura
部活でシェル芸がはやらない
部活でシェル芸がはやらない
xztaityozx
Play frameworkをエヴァンジェる
Play frameworkをエヴァンジェる
ke-m kamekoopa
Oneliner
Oneliner
NNCT programming study group
柿と杮
柿と杮
xztaityozx
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo Spring
Makoto Ohnami
zsh とわたし
zsh とわたし
Toshihiko Shimokawa
OCamlでJavaScriptが幸せ
OCamlでJavaScriptが幸せ
Sachirou Inoue
シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!
xztaityozx
Web技術勉強会 第37回
Web技術勉強会 第37回
龍一 田中
入門 超絶技巧プログラミング !
入門 超絶技巧プログラミング !
Nobutada Matsubara
Ejercicio 56
Ejercicio 56
aitoor1234
La mision del colibri
La mision del colibri
epilarbg
Tema 1. multiplicación y división
Tema 1. multiplicación y división
Daniel Calvente Calvente
La leyenda del colibrí
La leyenda del colibrí
SweetAngel55
Divisiones entre 10
Divisiones entre 10
Luis Gutiérrez
Modenf.powerpoint
Modenf.powerpoint
María Del Cid Valdés
Data munging
Data munging
Hiroyuki Taira
20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会
Ryuichi Ueda
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
mametter
モテる! Node.js でつくる twitter ボット制作
モテる! Node.js でつくる twitter ボット制作
hecomi
Title
Title
stucon
Contenu connexe
Tendances
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
Takahiro Okumura
部活でシェル芸がはやらない
部活でシェル芸がはやらない
xztaityozx
Play frameworkをエヴァンジェる
Play frameworkをエヴァンジェる
ke-m kamekoopa
Oneliner
Oneliner
NNCT programming study group
柿と杮
柿と杮
xztaityozx
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo Spring
Makoto Ohnami
zsh とわたし
zsh とわたし
Toshihiko Shimokawa
OCamlでJavaScriptが幸せ
OCamlでJavaScriptが幸せ
Sachirou Inoue
シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!
xztaityozx
Web技術勉強会 第37回
Web技術勉強会 第37回
龍一 田中
入門 超絶技巧プログラミング !
入門 超絶技巧プログラミング !
Nobutada Matsubara
Tendances
(11)
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
部活でシェル芸がはやらない
部活でシェル芸がはやらない
Play frameworkをエヴァンジェる
Play frameworkをエヴァンジェる
Oneliner
Oneliner
柿と杮
柿と杮
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo Spring
zsh とわたし
zsh とわたし
OCamlでJavaScriptが幸せ
OCamlでJavaScriptが幸せ
シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!
Web技術勉強会 第37回
Web技術勉強会 第37回
入門 超絶技巧プログラミング !
入門 超絶技巧プログラミング !
En vedette
Ejercicio 56
Ejercicio 56
aitoor1234
La mision del colibri
La mision del colibri
epilarbg
Tema 1. multiplicación y división
Tema 1. multiplicación y división
Daniel Calvente Calvente
La leyenda del colibrí
La leyenda del colibrí
SweetAngel55
Divisiones entre 10
Divisiones entre 10
Luis Gutiérrez
Modenf.powerpoint
Modenf.powerpoint
María Del Cid Valdés
En vedette
(6)
Ejercicio 56
Ejercicio 56
La mision del colibri
La mision del colibri
Tema 1. multiplicación y división
Tema 1. multiplicación y división
La leyenda del colibrí
La leyenda del colibrí
Divisiones entre 10
Divisiones entre 10
Modenf.powerpoint
Modenf.powerpoint
Similaire à Rubyで和暦をよみとる
Data munging
Data munging
Hiroyuki Taira
20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会
Ryuichi Ueda
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
mametter
モテる! Node.js でつくる twitter ボット制作
モテる! Node.js でつくる twitter ボット制作
hecomi
Title
Title
stucon
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
Similaire à Rubyで和暦をよみとる
(6)
Data munging
Data munging
20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
モテる! Node.js でつくる twitter ボット制作
モテる! Node.js でつくる twitter ボット制作
Title
Title
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Rubyで和暦をよみとる
1.
takot
2.
諸事情によりRuby
1.8.[56] でやってます /) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____ Ruby1.9? こまけぇこたぁいいんだよ!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
3.
4.
発端
最初はスクレイピング して取ってくる「平成 21年10月3日(土)」を parseしたかった URLに …/h211003.html みた いなのがあったので日 和る これ(h211003)を取り 出してDateオブジェク トに変換したい 一般的にはDate.parse を使う
5.
実際にやってみた irb(main):002:0> d =
Date.parse("h211003") #<Date: 3458007/2,0,2299161> irb(main):004:0> p d.year 21 => nil irb(main):005:0> p d.day 3 nil irb(main):007:0> p d.month 10 => nil 年のが失敗する……orz だが……
6.
ただし irb(main):008:0> d =
Date.parse("H21.10.03") => #<Date: 4910215/2,0,2299161> irb(main):009:0> p d.year 2009 => nil “H21.10.03”なら行け る
7.
これは勝つる!
8.
どこで表記を調べてるか辿ってみた
まずDate.rbを読んだ require „format‟ してる /lib/ruby/1.8/date/format.r bの中でいろんなパターン マッチングで涙ぐましい 努力をしてる format.rb 読めばよくね?
9.
format.rb def self._parse_jis(str, e)
# :nodoc: if str.sub!(/¥b([MTSH])(¥d+)¥.(¥d+)¥.(¥d+)/in, ' ') era = { 'm'=>1867, 't'=>1911, 's'=>1925, 'h'=>1988 }[$1.downcase] e.year = $2.to_i + era e.mon = $3.to_i e.mday = $4.to_i true end end
10.
if str.sub!(/¥b([MTSH])(¥d+)¥.(¥d+)¥.(¥d+)/in, ' ')
11.
if str.sub!(/¥b([MTSH])(¥d+)¥.(¥d+)¥.(¥d+)/in,
' ') || str.sub!(/¥b([MTSH])(¥d{2})(¥d{2})(¥d{2})/in, ' ')
12.
自作
自分のスクリプト内でDate._parse_jis をoverride format.rb を直接書き換えても良いが,副作用を減らす # to expand Japanese calendar parsing def Date._parse_jis(str, e) # :nodoc: if str.sub!(/¥b([MTSH])(¥d+)¥.(¥d+)¥.(¥d+)/in, ' ') || str.sub!(/¥b([MTSH])(¥d{2})(¥d{2})(¥d{2})/in, ' ') era = { 'm'=>1867, 't'=>1911, 's'=>1925, 'h'=>1988 }[$1.downcase] # p era # => 1988 e.year = $2.to_i + era e.mon = $3.to_i e.mday = $4.to_i true end end
13.
できた! d = Date.parse("h211003") p
d.year # => 2009 p d.month p d.mday % ./test.rb 2009 10 3
14.
Future work 当初の平成21年10月3日(土)
とか 2009 年10月3日 に対応したい Date.parse_jis のやり方が分かったので 案外何とかなるかも
15.
まとめ オレオレ日付のparseが
したかったら, Date._parse_jis (など) をoverrideしよう! 慶長9年 => K9. みたい のもいける!
Télécharger maintenant