Help us understand the problem. What is going on with this article?

数値をカンマ区切りにする

More than 1 year has passed since last update.

数値(もしくは文字列)をカンマ区切りにする関数を書いてください

その場で何も見ずに書いてくれみたいな事があったので残しときます
何かの参考になれば。何かの。

あれ、Qiitaの使い方ってこんな感じでもいいのかな…

追記

コメント欄より、一番簡単に実装するなら

toLocaleString.js
var num = 12345;
num.toLocaleString();

で良いです。
しかし、ブラウザによって異なる挙動を起こすことも有りますので注意してください。

2015 / 04 / 09追記

コメント欄より、toLocaleStringに関してはSafariはそもそも対応していないようです。

正規表現

まず、正規表現でやるやつ

regex.js
// 正規表現でセパレート
function separate(num){
    return String(num).replace( /(\d)(?=(\d\d\d)+(?!\d))/g, '$1,');
}

実際使うときはこれでいいはず。
でも正規表現をしっかり理解していないと絶対書けない
すくなくとも私は書けません

ループ

つぎ、ループでやる
多分多くの人がこんな感じだと思う(特に自分達みたいな学生)

loop.js
// ループでセパレート
function separate(num){
    // 文字列にする
    num = String(num);

    // 返却用
    var separated = '';

    // 位置文字ずつ配列にする
    var nums = num.split('');

    // 長さを入れとく
    var len = nums.length;

    // 一文字ずつ追加してくよ
    for(var i = 0; i < len; i++){
        // 後ろから追加していく
        separated = nums[(len-1)-i] + separated;

        // 3桁ごとにカンマ追加
        if(i % 3 === 2 && len > 3){
            separated = ',' + separated;
        }
    }

    return separated;
}

今回はJavaScriptだけど、どの言語でもできそうな実装
配列の反転(reverse)使えばもうちょい短くなるし?
無難でいいと思う。多分文句も言われませんよね?

ふむ、でも私これで書いてません
再帰関数使いました

再帰関数

自分自身を呼び出すアレです

recursive.js
// 再帰関数でセパレート
function separate(num){
    // 文字列にする
    num = String(num);

    var len = num.length;

    // 再帰的に呼び出すよ
    if(len > 3){
        // 前半を引数に再帰呼び出し + 後半3桁
        return separate(num.substring(0,len-3))+','+num.substring(len-3);
    } else {
        return num;
    }
}

個人的に結構いい感じ
スマートでわかりやすいと思うんですけどどうでしょう

んで

結局何が言いたかったのかって言うと、
プログラムの世界っておんなじ動作でも中身が全然違うからおもしろい
もっと(かっこ)いい書き方あったら教えてください

zawascript
業務ではUnity。 Webが好き。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした