JavaScript:如何使⽤format格式化字符串在 Java 等编程语⾔中有 String.format ⽅法⽤来组装字符串,⾮常⽅便。
⽽ JavaScript 中好像只能是通过加号组装:
var s = "Hello " + " World"
有类似 String.format 的函数吗?有,但要⾃⼰实现。
⽅式1:使⽤ES6
在最新的 Chrome 等浏览器中已经⽀持 ES6 了。
var name = 'letian'
字符串截取方法slicevar s = `Hello ${name}`
console.log(s)
⽅法2:在 String 原型中增加 format 函数
String.prototype.format = function() {
var formatted = this;
for( var arg in arguments ) {
formatted = place("{" + arg + "}", arguments[arg]);
}
return formatted;
};
var s = '你好 {0} {1}'.formar('value1', 123)
console.log(s)
运⾏结果:
你好 value1 123
但是上⾯这个实现有 bug,⽐如'{0} {1}'.format('{1}', '{0}')的结果是{0} {1},这个和预期的{1} {0}不⼀致。
修复如下:
if (!String.prototype.format) {
String.prototype.format = function() {
var args = arguments;
place(/{(\d+)}/g, function(match, number) {
return typeof args[number] != 'undefined'
args[number]
: match
;
});
};
}
如果不想在字符串后⾯加.format,可以⽤ String.format ⽅法,那么可以⽤下⾯的实现:
if (!String.format) {
String.format = function(format) {
var args = Array.prototype.slice.call(arguments, 1);
place(/{(\d+)}/g, function(match, number) {
return typeof args[number] != 'undefined'
args[number]
: match
;
});
};
}
使⽤⽰例: String.format('{0}', 'Hello')。
⽅法3: sprintf.js 库
参考

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。