javascript模拟C#格式化字符串


Posted in Javascript onAugust 26, 2015

JS 模拟C# 字符串格式化操作

/***
** 功能: 字符串格式化替换操作
***/
String.prototype.format = function () {
 var args = arguments;
 return this.replace(/\{(\d+)\}/g,
 function (m, i) {
  return args[i];
 });
}

js实现类似c#中的字符串处理函数format():

熟悉c#的应该知道有format()这么一个方法,下面就来模仿一下,在javascript中也实现此功能。

代码实例如下:

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);

以上代码是实现了我们想要的效果,下面介绍一下它的实现过程:

一.实现原理:

原理比较简单,这里长话短说,具体可以参阅代码注释。使用正则表达式找出要被替换的字符串,然后使用指定的内容替换这些字符串即可,在代码中,指定的内容有的是字符串直接量,有的则是对象的属性值。

二.代码注释:

1.String.prototype.format=function(args){{}),通过原型对象为String对象添加实例方法format,此方法就是用来处理字符串。

2.if(arguments.length>0),如果传递参数的个数大于0。

3.var result=this,将this的引用赋值给变量result。

4.if(arguments.length==1&&typeof(args)=="object"),用来判断传递的参数是否是一个对象直接量。

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++),遍历传递的参数。

10.if(arguments==undefined),如果为undefined,就返回空字符串。

11.var reg=new RegExp("({["+i+"]})","g"),用来匹配指定的字符串。

12.result=result.replace(reg,arguments),进行替换。

13.return result,返回替换后的字符串。

14.return this,如果没有传递参数,则返回字符串本身。

Javascript 相关文章推荐
不错的asp中显示新闻的功能
Oct 13 Javascript
jQuery自定义事件的简单实现代码
Jan 27 Javascript
浅谈javascript中自定义模版
Jan 29 Javascript
js实现鼠标悬浮给图片加边框的方法
Jan 30 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
Aug 05 Javascript
Vuejs实现带样式的单文件组件新方法
May 02 Javascript
小程序实现页面顶部选项卡效果
Nov 06 Javascript
关于layui toolbar和template的结合使用方法
Sep 19 Javascript
Node.js实现简单管理系统
Sep 23 Javascript
Node.js API详解之 dns模块用法实例分析
May 15 Javascript
JavaScript读取本地文件常用方法流程解析
Oct 12 Javascript
一文搞懂redux在react中的初步用法
Jun 09 Javascript
jQuery实现滚动切换的tab选项卡效果代码
Aug 26 #Javascript
基于jquery实现一个滚动的分步注册向导-附源码
Aug 26 #Javascript
jQuery带时间的日期控件代码分享
Aug 26 #Javascript
js仿苹果iwatch外观的计时器代码分享
Aug 26 #Javascript
jQuery下拉友情链接美化效果代码分享
Aug 26 #Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
Aug 26 #Javascript
jquery实现平滑的二级下拉菜单效果
Aug 26 #Javascript
You might like
php iconv() : Detected an illegal character in input string
2010/12/05 PHP
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
Linux下编译redis和phpredis的方法
2016/04/07 PHP
Jquery选择器 $实现原理
2009/12/02 Javascript
Javascript中call与apply的学习笔记
2014/09/22 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
JQuery 的跨域方法推荐_可跨任何网站
2016/05/18 Javascript
老生常谈JavaScript 正则表达式语法
2016/08/20 Javascript
使用jsonp实现跨域获取数据实例讲解
2016/12/25 Javascript
简单好用的nodejs 爬虫框架分享
2017/03/26 NodeJs
vue轮播图插件vue-awesome-swiper
2017/11/27 Javascript
详解JS模块导入导出
2017/12/20 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
2019/07/15 Python
python实现的自动发送消息功能详解
2019/08/15 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
基于django micro搭建网站实现加水印功能
2020/05/22 Python
CSS3 实现倒计时效果
2020/11/25 HTML / CSS
韩国现代百货官网:Hmall
2018/03/21 全球购物
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
平面设计的岗位职责
2013/11/08 职场文书
项目经理的岗位职责
2013/11/23 职场文书
公司前台接待岗位职责
2013/12/03 职场文书
婚礼答谢宴主持词
2014/03/14 职场文书
洗发露广告词
2014/03/14 职场文书
经贸日语专业个人求职信范文
2014/04/29 职场文书
工作散漫检讨书
2014/09/16 职场文书
高校自主招生教师推荐信
2015/03/23 职场文书
公司宣传语大全
2015/07/13 职场文书
重阳节主题班会
2015/08/17 职场文书
教你利用python实现企业微信发送消息
2021/05/23 Python
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers