スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Rubyで3桁毎にカンマを入れる


1234567みたいな数値を 1,234,567 みたいにしたいという話.
参考URL
http://h2np.net/mynotebook/post/67
http://blog.livedoor.jp/takaaki_bb/archives/51133994.html
どうやるか
文字列に直す→桁の並びを逆にする→左から3つ分の数字(ABCとしよう)の次に何か数字があればそのABCをABC, に置き換える→再度桁の並びを逆にする(元に戻す)
こんな感じ
1234567.to_s.reverse.gsub(/(\d{3})(?=\d)/,'\1,').reverse
=> "1,234,567"
非常にエレガントな解だと思う.こんなん逆立ちしても思いつけない.


研究室の先生の日報にメモってあった。1行でこのプログラム終了とか、スマート過ぎて挫折しそう。
俺だったら多分馬鹿正直にまずは文字数が何文字かを数える→文字数÷3で余り切り捨てして結果を外部プログラムに引数として渡す→3文字ごとにコンマを、引数の数だけ入れる外部プログラムから入れてあげる
みたいな感じでゴリ押しで結局10行くらいのプログラムを書いちゃうんだろうな。

ていうかそもそも、1234567.to_s.reverse.gsub(/(\d{3})(?=\d)/,'\1,').reverseなんていきなり見ても何のプログラムか理解出来ねえよ。それは俺が単純に、reverseメソッドあたりが初耳ってのと、正規表現を暗記する気が一切無くて使う都度、表を見てるからってのもあると思うんだけど、確かに脳みそのスペックが違いすぎる人間同士が同じ会社に集まったらお互いのプログラム理解出来なくて困っちゃいそうだな。
もし俺なんかがGoogleとかの一部の天才集団とかに入ったらプログラムの1行1行が理解出来なくて時間を無為に過ごしそう・・・とりあえずメソッドと正規表現くらいは覚えておいて損は無いのか・・・な・・・



コメントの投稿

非公開コメント

プロフィール

ゆうじ

Author:ゆうじ
社会人1年目〜4年目:インフラエンジニア
社会人5年目〜   :セキュリティエンジニア

ほぼネットワーク屋でした。


[保有資格]
運転免許
漢字検定準2級
パスコンスピード検定1級
ITパスポート
基本情報技術者試験
応用情報技術者試験
Comptia A+
CCENT
CCNA
CCNP
MCPC2級
VCP-DCV 5.5
LPIC Level1
LPIC Level2
LPIC Level3core
LPIC Level3mixed environment

パズドラランク950↑

サドンアタック
中佐:シコ星
W/L 46% K/D54%
少佐:尿イエロー
W/L 50% K/D 56%
少尉:ケツアゴに挿入
W/L 100% K/D77%


メイプルストーリー(笑)
柳)195メカニック
柳)180台DS
柳)178DS
現在持ってるキャラはこの3つ

柳)140台?投
キャラ名:ちnこ
売り済み、現在行方不明





mixi→id=19488862
Skype:yuuzi.kab
Twitter:gosloli
Instagram:yuuzikab










月別アーカイブ
カテゴリー
ブログの更新率
Twitter
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
.key { margin: 0 3px; padding: 1px 6px; border-radius: 3px; border: 1px solid #E0E0E0; border-bottom-width: 2px; background: #F0F0F0; background: -ms-linear-gradient(top, #F0F0F0, #FCFCFC); background: -moz-linear-gradient(top, #F0F0F0, #FCFCFC); background: -webkit-gradient(linear, center top, center bottom, from(#F0F0F0), to(#FCFCFC)); background: linear-gradient(top, #F0F0F0, #FCFCFC); font-family: Arial}