+ 我要发布
我发布的 我的标签 发现
浏览器扩展
斑点象@Edge

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); #-------------------
我的笔记