はじめまして、con999といいます。
javascriptにカンマを入れる方法を教えて頂きたいのです。
実は私はある会社の営業をしているのですが、昔(5年程前)にホームページの制作会社に勤めていたことが有るんですが、それを知っているお得意先のホテルのおえらいさんから、ホームページ上で動く見積書を作ってくれと頼まれたんですが、断ることもできずに
引き受けたんですが・・・
計算はできるんですが、計算した数値にカンマを入れることができないのです。
頼りにしていた昔の同僚にも色々教えてもらったんですが、わからないんです。
もしよければ、一度このアドレスのjavascriptを見て
どうのようにしたら良いかアドバイス頂けませんでしょうか。どうかよろしくお願い致します。
http://hccweb1.bai.ne.jp/~hde15601/keisan/index. …
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
文字列編集で通貨のカンマを入れるしかないと思います。
正規化表現が使える場合のサンプルを添付しました。
使えない場合は、文字列編集をコーディングでもいいかと思います。
function kval(n) {
var result;
var str = "" + n;
var abc;
if(!(abc = str.match(/^([\+-]|)(\d+)(\.\d+|)$/)))
return "";
var int_data = abc[2];
var len = int_data.length;
var mod = (len - 1) % 3 + 1;
result = int_data.substr(0, mod);
for(var i = mod; i < len; i += 3)
result += "," + int_data.substr(i, 3);
result = abc[1] + result + abc[3];
return result;
}
私が書き込んで直ぐに回答頂き有り難うございました。
まだ解らない所も有りますが、自分で色々やってみます。アドバイス頂き本当に有り難うございました。
また解らないことが有れば質問させて頂きますので、よろしくお願い致します。
No.2
- 回答日時:
面白そうなので、僕も考えてみました。
関数名は、No.1の方と同じとします。
参考までに・・・。
function kval(ex1){
if (isNaN(ex1)) return ex1;
var ex2 = ex1;
var ex3 = "";
for (ex2 = ex1; 1000 <= ex2; ex2 = (ex2 - ex2 % 1000) / 1000){
var ex4 = ex2 % 1000;
var ex5 = (ex4 < 100) ? ",0" : ",";
if (ex4 < 10) ex5 += "0";
ex3 = ex5 + ex4 + ex3;
}
return ex2 + ex3;
}
お礼が遅くなり申し訳有りませんでした。
アドバイス頂き大変有り難うございました。
教えて頂いた用にやってみます。
また解らなければ、質問させて頂きます。
No.3
- 回答日時:
シンプルに、文字列編集を行うサンプルを書いてみました。
受け取った数値を文字列化し、下から順に、3文字コピーしたらカンマを入れる、の繰り返しでOKです。
function kval(num) {
var str = "" + num;
var ret = "";
for (var i = 0; i < str.length; i++) {
ret = str.charAt(str.length - 1 - i) + ret;
if ((i % 3 == 2) && (i + 1 < str.length)) { ret = "," + ret; }
}
return ret;
}
「3回に1回~」の条件文にもう1つ条件をつけていますが、これは「まだコピーする文字があるなら」というもので、数値の桁数が3の倍数の場合に、頭がカンマで始まる文字列を返してしまうのを防ぎます。
アドバイス頂き有り難うございます。
カンマを入れるやり方が色々あってびっくりしました。
丁寧に御説明頂き本当にありがとうございました。
No.4
- 回答日時:
No.2の者です。
前回のは、あまりスマートでなかったので、書き直しました。//------
function kval(ex1){
if (isNaN(ex1)) return "NaN";
ex1 = (ex1 < 0) ? 0 : Math.floor(ex1);
for (var ex2 = ""; 1000 <= ex1; ex1 = Math.floor(ex1 / 1000)){
var ex3 = ex1 % 1000;
ex2 = "," + ((ex3 < 100) ? 0 : "") + ((ex3 < 10) ? 0 : "") + ex3 + ex2;
}
return ex1 + ex2;
}
//------
金額表示と言うことで、文字列が渡されると"NaN"を返します。
また、負の数はゼロになり、小数点以下は切り捨てです。
関数に渡されるのが自然数と決まっているなら、こういった処理はムダなので、
関数は、いきなりforから始めてしまいましょう。
========
それから。調べてみると、参考URLにあるような方法もあり、JScriptにすると、
//------
function kval(ex1){
ex1 = ex1.toString(10);
var ex2 = /^([-+]?\d+)(\d\d\d)/;
while(ex1.match(ex2)) ex1 = ex1.replace(ex2,"$1,$2");
return ex1;
}
//------
と書けました。やはり、文字列で処理してしまうのがスマートなのかな・・・。
参考URL:http://www.din.or.jp/~ohzaki/perl.htm#NumberWith …
2回もご解答頂き本当に有り難うございます。
しかも色々調べて下さって本当にすみません。
皆さんに色々アドバイスを頂いてるのにも関わらず、上手くできないので非常に恥ずかしいのですが・・・
また解らないことがあれば補足に書き込ませて頂きますので、よろしくお願い致します。
本当に有り難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Instagram HTML5の廃止とJavaScript 2 2022/04/13 21:05
- 健康保険 国民健康保険料の1ヶ月に支払う額を教えてください。 5 2022/05/30 16:00
- 投資・株式の税金 一般口座で同一銘柄の総平均法のことで 1 2023/02/27 22:08
- 分譲マンション マンション大規模修繕工事の資金不足 神奈川県の築37年総戸数36戸のマンションの管理組合理事長を今年 7 2022/09/03 19:55
- 労働相談 有給休暇使用時の賃金の計算方法について 5 2022/04/04 00:02
- 住民税 非課税になるかどうか、住民税計算方法について、教えてください。 自分なりに調べ尽くし、色んなサイトで 2 2022/11/21 16:28
- 国民年金・基礎年金 年金の受給額の計算について 1 2023/07/10 18:45
- その他(法律) 契約は成立しているのか? 1 2022/07/15 22:18
- 引越し・部屋探し 至近距離3月の引っ越しおいくら? 1 2023/03/08 19:19
- 会社・職場 仕事の引継ぎについて 3 2022/06/02 00:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
指定時間になったら、WEBサイト...
-
スマホ上で、左右スワイプで次...
-
Colorboxがうまく設置できません
-
フォームが空欄の時にフォーム...
-
画面遷移を行わずに同一ページ...
-
特定の文字列を複数抜き出した...
-
読み込んだQRコードをフォーム...
-
初心者です。gulpでコンパイル...
-
jsで質問です。 ボタンが二つ存...
-
階層別の組織図の自動作成について
-
GASでチェックボックスを一括of...
-
追加ボタンを押した際に ok ボ...
-
出発駅A、到着駅Bを選択すると...
-
アップロードファイルの種類に...
-
【GAS】WEBアプリでハイパーリ...
-
jQueryで同じクラス名のものを...
-
Q&A掲示板の入力フォームに文字...
-
メールフォームの日付入力フォ...
-
二次元配列を使って順位をだす...
-
iOSのみダブルタップが必要
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
var exports = exports || {}; ...
-
HTMLタグに複数のクラスを設定...
-
jsで質問です。 displayプロパ...
-
画面遷移を行わずに同一ページ...
-
Googleフォームで選択肢に応じ...
-
特定の文字列を複数抜き出した...
-
フロントエンドフレームワーク...
-
変数名をどのようにつけるのが...
-
【JS】selectでchangeした時の...
-
React hooksが値を返して配列変...
-
オブジェクトから任意のプロパ...
-
指定時間になったら、WEBサイト...
-
Colorboxがうまく設置できません
-
二次元配列の中の各行の要素を...
-
読み込んだQRコードをフォーム...
-
IndexedDB を使ってファイルア...
-
HTMLで作った時報アプリが動き...
-
GASに文字列として関数を入れる...
-
GASでGoogleフォームの自動返信...
-
①入力フォーム→②確認表示画面→③...
おすすめ情報