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 相关文章推荐
匹配任意字符的正则表达式写法
Apr 29 Javascript
javascript 获取模态窗口的滚动位置代码
Aug 06 Javascript
一款由jquery实现的整屏切换特效
Sep 15 Javascript
详谈JavaScript 匿名函数及闭包
Nov 14 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
Apr 12 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
May 25 Javascript
AngularJS 作用域详解及示例代码
Aug 17 Javascript
vue 使用ref 让父组件调用子组件的方法
Feb 08 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
Aug 10 Javascript
js使用文件流下载csv文件的实现方法
Jul 15 Javascript
原生JavaScript实现弹幕组件的示例代码
Oct 12 Javascript
详解Node.js如何处理ES6模块
May 15 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使用fsockopen函数发送post,get请求获取网页内容的方法
2014/11/15 PHP
php生成txt文件实例代码介绍
2016/04/28 PHP
php 变量引用与变量销毁机制详细介绍
2016/12/05 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
利用jquery包将字符串生成二维码图片
2013/09/12 Javascript
跨域传值即主页面与iframe之间互相传值
2013/12/09 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
Javascript学习笔记之数组的遍历和 length 属性
2014/11/23 Javascript
jQuery短信验证倒计时功能实现方法详解
2016/05/25 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
webpack4 处理SCSS的方法示例
2018/09/03 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
深入浅析JavaScript中的in关键字和for-in循环
2020/04/20 Javascript
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
python清除字符串里非数字字符的方法
2015/07/02 Python
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
Python如何自动获取目标网站最新通知
2020/06/18 Python
Nip + Fab官网:英国美容品牌
2019/08/26 全球购物
企业治理工作自我评价
2013/09/26 职场文书
网站编辑求职信
2013/10/17 职场文书
体育专业个人求职信范文
2013/12/27 职场文书
党的群众路线教育实践活动宣传标语口号
2014/06/06 职场文书
英语系毕业生求职信
2014/07/13 职场文书
安全目标责任书
2014/07/22 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
人身意外保险授权委托书
2014/10/01 职场文书
加薪通知
2015/04/25 职场文书
教师师德承诺书2016
2016/03/25 职场文书
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python