<script> String.prototype.format = function (kwargs) { var ret = this.replace(/\{(\w+)\}/g, function (substring, args) { return kwargs[args] }); } </script>
js 中是沒有 format 這種格式化的方法的。
但是 因為字符串也是一個原型類,所有的方法都在 prototype中。 所以可以向這個里面添加一個 自定義的 format 方法。
接收的參數因該是這樣: {'age':18, 'name':'allan'}
需要進行格式化的字符串:‘學生名:{name},年齡:{age}’
這樣在使用 自定義的 format 方法時,
this 就指的是 ‘{age}{name}’ 。 使用replace進行替換, 第一個參數接收一個正則表達式,/\{(\w+)\}/g 表示全局匹配 大括號中的任意字母數字。
第二個參數是,一個函數, 這個函數接收兩個參數。每匹配成功一次就會將匹配的到的字符串交給后面的函數,
substring 就是 {age} 和 {name}, 這就是匹配到的內容。
args 就是 age 和 name。 在匹配到的基礎上 將其中 分組中的東西。
拿到了 age 和 name, 就可以到 (kwargs == {'age':18, 'name':'allan'}) kwargs 這個字典中,取出鍵所對應的值。 然后返回。
這里的返回值, 就會交給 replace ,替換掉通過正則匹配到的 字符。
最終 :
‘學生名:{name},年齡:{age}’.format({'age':18, 'name':'allan'})
得到的結果就會是:學生名:allan,年齡:18. 這樣就達到了 python中 format的效果。