JavaScript 中如何实现字符串格式化方法 String.format()
在 Python 等编程语言中有 "{}{}".format() 方法用来格式化字符串,使用起来非常方便,但在 JavaScript 中默认只能通过字符串+的方式来实现,例如:
let s = "Hello " + "World" + "!";
如何实现类似 Python 中的 format 格式化方式呢?
方式1:使用 ES6 来实现
#-------------------
let s1 = 'World';
var s = `Hello ${s1}`;
#-------------------
方法2:在 String 原型中增加 format 函数来实现
#-------------------
String.prototype.format = function() {
var formatted = this;
for( var arg in arguments ) {
formatted = formatted.replace("{" + arg + "}", arguments[arg]);
}
return formatted;
};
let s = '{0} {1}'.formar("Hello", "World");
#-------------------
如果想在格式化时也支持数字输入,修改后的代码如下:
#-------------------
if (!String.prototype.format) {
String.prototype.format = function() {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] != 'undefined'
? args[number]
: match
;
});
};
}
let s = '{0} {1}'.formar("Hello", 1234);
#-------------------
如果想使用 String.format(formater, p1, p2) 的方法,继续修改方法:
#-------------------
if (!String.format) {
String.format = function(format) {
var args = Array.prototype.slice.call(arguments, 1);
return format.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] != 'undefined'
? args[number]
: match
;
});
};
}
let s = String.format("{0} {1} {2}", "Hello", "World!", 1234);
#-------------------
我的笔记