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 相关文章推荐
基于jquery的固定表头和列头的代码
May 03 Javascript
基于Jquery实现的一个图片滚动切换
Jun 21 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
May 04 Javascript
angular双向绑定模拟探索
Dec 26 Javascript
JS实现留言板功能
Jun 17 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
Jul 19 Javascript
React Native模块之Permissions权限申请的实例相机
Sep 28 Javascript
jQuery实现导航样式布局操作示例【可自定义样式布局】
Jul 24 jQuery
vue.js自定义组件directives的实例代码
Nov 09 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
Apr 02 Javascript
Vue管理系统前端之组件拆分封装详解
Aug 23 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
Dec 14 Vue.js
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命名空间与自动加载类详解
2018/09/04 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
JQuery Highcharts 动态生成图表的方法
2013/11/15 Javascript
js取float型小数点后两位数的方法
2014/01/18 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
干货!教大家如何选择Vue和React
2017/03/13 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
js实现文字列表无缝滚动效果
2017/06/23 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
express+mockjs实现模拟后台数据发送功能
2018/01/07 Javascript
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
微信小程序页面生命周期详解
2018/01/31 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
Python数据库小程序源代码
2019/09/15 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
2019/09/25 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
Django web自定义通用权限控制实现方法
2020/11/24 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
网游商务专员求职信
2013/10/15 职场文书
医学生求职自荐信
2013/10/25 职场文书
学生处主任岗位职责
2013/12/01 职场文书
技校生自我鉴定
2013/12/08 职场文书
公司活动策划方案
2014/01/13 职场文书
员工拓展培训方案
2014/02/15 职场文书
幼儿园保育员岗位职责
2014/04/13 职场文书
营业员岗位职责范本
2015/04/14 职场文书
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python