0

ええと、pythonまたはjavaまたは...では、次のようにします:(pythonバージョン)

tmp = "how%s" %("isit") 

これで、tmp は「howisit」のようになります。
javascript でそのようなものに何かブリットはありますか? ( sprintf ではなく)

ありがとう

4

5 に答える 5

2

組み込みではありませんが、String プロトタイプを拡張することで独自のテンプレートを作成できます。

String.prototype.template = String.prototype.template ||
   function(){
    var args = arguments;
    function replacer(a){
        return args[Number(a.slice(1))-1] || a;
    }
    return this.replace(/(\$)?\d+/gm,replacer)
   };
// usages
'How$1'.template('isit'); //=> Howisit
var greet = new Date('2012/08/08 08:00') < new Date 
             ? ['where','yesterday'] : ['are','today'];
'How $1 you $2?'.template(greet[0],greet[1]); // How where you yesterday?
于 2012-08-09T08:10:18.627 に答える
1

いいえ、javascript に組み込まれている文字列の書式設定はありません。

于 2012-08-09T08:08:28.810 に答える
1

いいえ、ありません。文字列連結ができます。

var tmp = 'how' + 'isit';

またはreplace他の状況で。これはばかげた例ですが、アイデアはわかります。

var tmp = 'how{0}'.replace('{0}', 'isit');
于 2012-08-09T08:10:09.543 に答える
0

これらの(単純な)スニペットを使用できると思います。

function formatString(s, v) {
  var s = (''+ s), ms = s.match(/(%s)/g), m, i = 0;
  if (!ms) return s;
  while(m = ms.shift()) {
     s = s.replace(/(%s)/, v[i]);
     i++;
  }
  return s;
}

var s = formatString("How%s", ["isit"]);

または;

String.prototype.format = function() {
    var s = (""+ this), ms = s.match(/(%s)/g) || [], m, v = arguments, i = 0;
    while(m = ms.shift()) {
        s = s.replace(/(%s)/, v[i++]);
    }
    return s;
}

var s = "id:%s, name:%s".format(1,"Kerem");
console.log(s);
于 2012-08-09T08:31:03.807 に答える
0

組み込み関数はありませんが、自分で簡単に作成できます。関数はreplace関数引数を取ることができ、この作業の完璧なソリューションです。ただし、これはすぐに遅くなる可能性があるため、大きな文字列や複雑な式には注意してください。

var formatString = function(str) {
    // get all the arguments after the first
    var replaceWith = Array.prototype.slice.call(arguments, 1);
    // simple replacer based on String, Number
    str.replace(/%\w/g, function() {
        return replaceWith.shift();
    });
};

var newString = formatString("how %s %s?", "is", "it");
于 2012-08-09T08:20:49.000 に答える