javascript模擬C#格式化字符串
JS 模擬C# 字符串格式化操作
/***
** 功能: 字符串格式化替換操作
***/
String.prototype.format = function () {
var args = arguments;
return this.replace(/\{(\d+)\}/g,
function (m, i) {
return args[i];
});
}
js實現(xiàn)類似c#中的字符串處理函數(shù)format():
熟悉c#的應(yīng)該知道有format()這么一個方法,下面就來模仿一下,在javascript中也實現(xiàn)此功能。
代碼實例如下:
String.prototype.format=function(args){
if(arguments.length>0){
var result=this;
if(arguments.length==1&&typeof(args)=="object"){
for(var key in args){
var reg=new RegExp("({"+key+"})","g");
result=result.replace(reg, args[key]);
}
}
else{
for(var i=0;i<arguments.length;i++){
if(arguments[i]==undefined){
return "";
}
else{
var reg=new RegExp ("({["+i+"]})","g");
result = result.replace(reg, arguments[i]);
}
}
}
return result;
}
else{
return this;
}
}
var fistStr="{0}歡迎您,希望大家能夠得到想要的{1}";
var secondStr="{webName}歡迎您,希望大家能夠得到想要的{favoriate}";
var firstOut=fistStr.format("","東西");
var secondOut=secondStr.format({webName:"",favoriate:"東西"});
console.log(firstOut);
console.log(secondOut);
以上代碼是實現(xiàn)了我們想要的效果,下面介紹一下它的實現(xiàn)過程:
一.實現(xiàn)原理:
原理比較簡單,這里長話短說,具體可以參閱代碼注釋。使用正則表達式找出要被替換的字符串,然后使用指定的內(nèi)容替換這些字符串即可,在代碼中,指定的內(nèi)容有的是字符串直接量,有的則是對象的屬性值。
二.代碼注釋:
1.String.prototype.format=function(args){{}),通過原型對象為String對象添加實例方法format,此方法就是用來處理字符串。
2.if(arguments.length>0),如果傳遞參數(shù)的個數(shù)大于0。
3.var result=this,將this的引用賦值給變量result。
4.if(arguments.length==1&&typeof(args)=="object"),用來判斷傳遞的參數(shù)是否是一個對象直接量。
5.for(var key in args),遍歷對象直接量中的屬性。
6.var reg=new RegExp("({"+key+"})","g"),用來匹配指定的字符串。
7.result=result.replace(reg,args[key]),用屬性值替換匹配的字符串。
8.else{},如果傳遞的不是一個對象直接量。
9.for(var i=0;i<arguments.length;i++),遍歷傳遞的參數(shù)。
10.if(arguments==undefined),如果為undefined,就返回空字符串。
11.var reg=new RegExp("({["+i+"]})","g"),用來匹配指定的字符串。
12.result=result.replace(reg,arguments),進行替換。
13.return result,返回替換后的字符串。
14.return this,如果沒有傳遞參數(shù),則返回字符串本身。
相關(guān)文章
JavaScript事件學(xué)習(xí)小結(jié)(一)事件流
這篇文章主要介紹了JavaScript事件學(xué)習(xí)小結(jié)(一)事件流的相關(guān)資料,需要的朋友可以參考下2016-06-06
基于JS實現(xiàn)密碼框(password)中顯示文字提示功能代碼
這篇文章主要介紹了實現(xiàn)密碼框(password)中顯示文字提示功能代碼,在項目開發(fā)中經(jīng)常會用到,需要的朋友可以參考下2016-05-05
javascript設(shè)計模式 – 策略模式原理與用法實例分析
這篇文章主要介紹了javascript設(shè)計模式 – 策略模式,結(jié)合實例形式分析了javascript策略模式相關(guān)概念、原理、用法及操作注意事項,需要的朋友可以參考下2020-04-04
javascript中使用正則表達式清理table樣式的代碼
本文給大家講解的是使用javascript實現(xiàn)去除多余的TABLE的樣式,主要通過結(jié)合正則表達式來實現(xiàn),非常的簡單實用,有需要的小伙伴可以參考下。2015-07-07

