JS格式化字符串的兩種方法(反引號(hào)與String.prototype)
本文一共介紹了兩種實(shí)現(xiàn)方式:
1. 使用反引號(hào)實(shí)現(xiàn)(推薦)
ES6 模板字符串(Template String)是增強(qiáng)版的字符串,用反引號(hào)(`)標(biāo)識(shí),它可以當(dāng)作普通字符串使用,也可以用來(lái)定義多行字符串,或者在字符串中嵌入變量。
語(yǔ)法格式:
`想要輸出的字符串……${變量名稱}想要輸出的字符串……${變量名稱}`應(yīng)用實(shí)例:
<script>
window.onload = function() {
var name = "徐可可";
var age = 25;
var sex = "男";
console.log(`大家好,我叫${name},性別${sex},今年${age}歲了`);
}
</script>2. 自定義方法實(shí)現(xiàn)
String.prototype 屬性表示 String原型對(duì)象。所有 String 的實(shí)例都繼承自 String.prototype. 任何String.prototype上的改變都會(huì)影響到所有的 String 實(shí)例。js擴(kuò)展String.prototype.format字符串拼接的功能,首先是基礎(chǔ)功能的改造:
String.prototype.format = function(){
if(arguments.length==0){
return this;
}
for(var s=this, i=0; i<arguments.length; i++){
s = s.replace(new RegExp("\\{"+i+"\\}","g"), arguments[i]);
}
return s;
};然后就是調(diào)用了:
//方式1
var test = '我的{0}是{1}';
var result = test.format('ID','coco56');
//方式2
var test = '我的{description}是{name}';
var result = test.format({description:'ID',name:'coco56'});下面是其它網(wǎng)友的補(bǔ)充
格式化字符串
使用的replace不適合多個(gè)重復(fù)
<!-- lang: js -->
String.prototype.format = function(args) {
var result = this;
if (arguments.length < 1) {
return result;
}
var data = arguments; //如果模板參數(shù)是數(shù)組
if (arguments.length == 1 && typeof (args) == "object") {
//如果模板參數(shù)是對(duì)象
data = args;
}
for (var key in data) {
var value = data[key];
if (undefined != value) {
result = result.replace("{" + key + "}", value);
}
}
return result;
}版本2 使用了replaceAll
<!-- lang: js -->
/**
* 替換所有匹配exp的字符串為指定字符串
* @param exp 被替換部分的正則
* @param newStr 替換成的字符串
*/
String.prototype.replaceAll = function (exp, newStr) {
return this.replace(new RegExp(exp, "gm"), newStr);
};
/**
* 原型:字符串格式化
* @param args 格式化參數(shù)值
*/
String.prototype.format = function(args) {
var result = this;
if (arguments.length < 1) {
return result;
}
var data = arguments; // 如果模板參數(shù)是數(shù)組
if (arguments.length == 1 && typeof (args) == "object") {
// 如果模板參數(shù)是對(duì)象
data = args;
}
for ( var key in data) {
var value = data[key];
if (undefined != value) {
result = result.replaceAll("\\{" + key + "\\}", value);
}
}
return result;
}使用方法:
<!-- lang: js -->
//兩種調(diào)用方式
var template1="我是{0},今年{1}了";
var result1=template1.format("loogn",22);
var template2="我是{name},今年{age}了";
var result2=template2.format({name:"loogn",age:22});
//兩個(gè)結(jié)果都是"我是loogn,今年22了"對(duì)于版本2使用了正則表達(dá)式(replaceaAll),意味著當(dāng)文本中出現(xiàn)多個(gè)替換位時(shí),都可以被替換。 var template1=“我是{0},今年{1}了, lucy今年也{1}了”; var
//結(jié)果是"我是loogn,今年22了, lucy今年也22了"
到此這篇關(guān)于JS格式化字符串的兩種方法(反引號(hào)與String.prototype)的文章就介紹到這了,更多相關(guān)JS格式化字符串內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
自定義函數(shù)實(shí)現(xiàn)IE7與IE8不兼容js中trim函數(shù)的問(wèn)題
這篇文章主要介紹了自定義函數(shù)實(shí)現(xiàn)IE7與IE8不兼容js中trim函數(shù)的方法,涉及trim函數(shù)的重寫與正則匹配的技巧,需要的朋友可以參考下2015-02-02
在JavaScript中實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用的實(shí)現(xiàn)
這篇文章主要介紹了在JavaScript中實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Bootstrap 響應(yīng)式實(shí)用工具實(shí)例詳解
Bootstrap 提供了一些輔助類,以便更快地實(shí)現(xiàn)對(duì)移動(dòng)設(shè)備友好的開(kāi)發(fā)。這些可以通過(guò)媒體查詢結(jié)合大型、小型和中型設(shè)備,實(shí)現(xiàn)內(nèi)容對(duì)設(shè)備的顯示和隱藏。下面通過(guò)本文給大家分享Bootstrap 響應(yīng)式實(shí)用工具,一起看看吧2017-03-03
javascript parseInt與Number函數(shù)的區(qū)別
在js中,如果你使用parseInt("08"),一般都會(huì)認(rèn)為會(huì)返回8,然而實(shí)際上返回了0.但是用Number("08")返回的才是8.2010-01-01
JavaScript中使用typeof運(yùn)算符需要注意的幾個(gè)坑
這篇文章主要介紹了JavaScript中使用typeof運(yùn)算符需要注意的幾個(gè)坑,本文總結(jié)了4個(gè)使用typeof運(yùn)算符要注意的問(wèn)題,需要的朋友可以參考下2014-11-11
JavaScript實(shí)現(xiàn)計(jì)算器的四則運(yùn)算功能
這篇文章主要為大家介紹了如何通過(guò)JavaScript實(shí)現(xiàn)計(jì)算器的四則運(yùn)算功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手試試2022-02-02
JS數(shù)組的遍歷方式for循環(huán)與for...in
本節(jié)主要介紹了JS數(shù)組的遍歷方式for循環(huán)與for...in,需要的朋友可以參考下2014-07-07

