在 C 語言中, printf 是一個很方便的輸出函數,在其他程式語言中,也或多或少提供了類似的格式化輸出或是格式化字串功能。
不過 JavaScript 並沒有定義這種函數 (直到 ECMAScript6 才提供 template string),那就自己寫吧。本文說明兩種格式化字串的實作方式。
我直接把格式化函數加到 String 類別中,讓它們變成字串方法。
這樣就可以 "Hello {0}!".interpolate('rock')
的形式撰寫。
這種敘述方式符合多數 OOPL 的表達方法。
第一個方法是用 {n}
包覆要代入的內容,基數從 0 開始。
這是 C# 式的用法。
第二個方法是用 $n
標示要代入的內容,基數從 1 開始。
這比較像 shell script 的用法。
使用如下例。
注意我操作 replace()
的方法,必須要這樣做,才不會重複替換已經代入的內容。
如果以參數清單做迭代,每次都替換整個字串的話,像上例 "abc{2}" 這種情形就會被再次替換內容,導致非預期結果。
JavaScript 雖然沒有正式的格式化字串或輸出函數,但是非正式的
console 項目卻實作了格式化功能。可惜的是 console 只能用於輸出內容。參考「
JavaScript console」。
相關文章
樂多舊網址: http://blog.roodo.com/rocksaying/archives/25899028.html
樂多舊回應