উপরের অনেকগুলি ফাংশন (জুলিয়ান জেল্ফস ব্যতীত) নিম্নলিখিত ত্রুটিটি রয়েছে:
js> '{0} {0} {1} {2}'.format(3.14, 'a{2}bc', 'foo');
3.14 3.14 afoobc foo
বা, আর্গুমেন্ট তালিকার শেষে থেকে পিছনে গণনা করা রূপগুলির জন্য:
js> '{0} {0} {1} {2}'.format(3.14, 'a{0}bc', 'foo');
3.14 3.14 a3.14bc foo
এখানে একটি সঠিক ফাংশন। এটি জুলিয়ান জেল্ফসের কোডের একটি প্রোটোটাইপাল বৈকল্পিক যা আমি কিছুটা শক্ত করে তুলেছিলাম:
String.prototype.format = function () {
var args = arguments;
return this.replace(/\{(\d+)\}/g, function (m, n) { return args[n]; });
};
এবং এখানে এটির সামান্য আরও উন্নত সংস্করণ রয়েছে, যা আপনাকে ধনুর্বন্ধনীগুলি দ্বিগুণ করে পালাতে সহায়তা করে:
String.prototype.format = function () {
var args = arguments;
return this.replace(/\{\{|\}\}|\{(\d+)\}/g, function (m, n) {
if (m == "{{") { return "{"; }
if (m == "}}") { return "}"; }
return args[n];
});
};
এটি সঠিকভাবে কাজ করে:
js> '{0} {{0}} {{{0}}} {1} {2}'.format(3.14, 'a{2}bc', 'foo');
3.14 {0} {3.14} a{2}bc foo
এখানে ব্লেয়ার মিচেলমোরের আরও একটি ভাল প্রয়োগ রয়েছে, যার সাথে একগুচ্ছ চমৎকার অতিরিক্ত বৈশিষ্ট্য রয়েছে: https://web.archive.org/web/20120315214858/http://blairmitchelmore.com/javascript/string.format