なんだ、JavaScript も可変長引数が使えたんだ。
arguments という特殊な変数を利用すればいいんだね。
って Gjs の /usr/share/gjs-1.0/format.js もそうやっていた。
それなら Python3 っぽい文字列成形が自作できるかも。
いや、すっかり Python3 に慣れてしまったので。
完全に同じでなくてもいいんだ、”{0}, {1}” みたいな手段って便利じゃん。
Gjs なら format.js でいいけど Web で使いたいし参考にして。
1 2 3 4 5 6 7 8 9 | String. prototype .format = function () { var result = this ; for ( var i = 0; i < arguments.length; i++) { var s = "{" + i + "}" ; var r = String(arguments[i]); // not tostring(); result = result.replace(s, r); } return result; } |
超手抜き、{0:.2f} みたいなのはできない!
それと文字列の tostring だとエラーになるけどキャストなら通るようだ。
これで文字列も整数も実数も対応できる、しかし本当にいいかげんな言語だ。
Fedora は最初から Gjs が入っているから確認が簡単でいいですよ。
SpiderMonkey ですからつまり Firefox でも使えるってことだし。
いや、Web てか iPhone で使えないと意味がない、確認だ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <!DOCTYPE html> < html > < head > < meta charset = "utf-8" > < title >Python3 っぽい文字列の成形</ title > <!-- for Smart Phone --> < meta name = "viewport" content=" width = device -width, initial-scale = 1 .0, minimum-scale = 1 .0, maximum-scale = 1 .0, user-scalable = no " /> < style > body { -webkit-text-size-adjust: 100%; } </ style > < script type = "text/javascript" > <!-- const STR = "Test : {0}, {1}, {2}"; String.prototype.format = function() { var result = this; for (var i = 0; i < arguments.length; i++) { var s = "{" + i + "}"; var r = String(arguments[i]); // not tostring(); result = result.replace(s, r); } return result; } var init = function() { // Test var text = STR.format("str", 1, 0.5); document.getElementById("ID_TEXT").innerHTML = text; } //--> </ script > </ head > < body onLoad = "init()" > < p >const STR = "Test : {0}, {1}, {2}";< br /> var text = STR.format("str", 1, 0.5);< br /> document.getElementById("ID_TEXT").innerHTML = text;< br /> ↓</ p > < p id = "ID_TEXT" ></ p > < p >< a href = "." >戻る</ a ></ p > </ body > </ html > |
Safari, Google Chrome でも問題ないね、○E は知らないしどうでもいい。
ゲームの “Round {0} Start!” みたいな時に使うと便利かも。