なんだ、JavaScript も可変長引数が使えたんだ。
arguments という特殊な変数を利用すればいいんだね。
って Gjs の /usr/share/gjs-1.0/format.js もそうやっていた。
それなら Python3 っぽい文字列成形が自作できるかも。
いや、すっかり Python3 に慣れてしまったので。
完全に同じでなくてもいいんだ、”{0}, {1}” みたいな手段って便利じゃん。
Gjs なら format.js でいいけど Web で使いたいし参考にして。
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 で使えないと意味がない、確認だ。
<!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!” みたいな時に使うと便利かも。
