JS中实现简单Formatter函数示例代码
作者:bea
JS原生并没有提供方便使用的Formatter函数,用字符拼接的方式看起来混乱难读,而且使用起来很不方便。个人感觉C#里提供的语法比较好用,如: String.Format(“Welcome to learn '{0}','{0}' is awesome,you will {1} it!","Javascript","love"); 这种有顺序的替换方式,比较清晰,而且在要替换同一内容时候可以省去传递重复参数的情况,下面是JS简单实现版本(没有严格测试): (fun
JS原生并没有提供方便使用的Formatter函数,用字符拼接的方式看起来混乱难读,而且使用起来很不方便。个人感觉C#里提供的语法比较好用,如:
String.Format(“Welcome to learn '{0}','{0}' is awesome,you will {1} it!","Javascript","love");
这种有顺序的替换方式,比较清晰,而且在要替换同一内容时候可以省去传递重复参数的情况,下面是JS简单实现版本(没有严格测试):
(function(exports) {
exports.format = function(){
var args = Array.prototype.slice.call(arguments),
sourceStr = args.shift();
function execReplace(text,replacement,index){
return text.replace(new RegExp("\{"+index+"\}",'g'),replacement);
}
return args.reduce(execReplace,sourceStr);
}
})(window.utils = window.utils || {});
console.log(utils.format("Welcome to learn '{0}','{0}' is awesome,you will {1} it!","Javascript","love"));
关键的是这句:
args.reduce(execReplace,sourceStr);
这里使用了Array的reduce函数,reduce和reduceRight是ES5新增加的函数,该函数的参数是reduce(callback,initialValue),callback接收4个参数分别是:
previousValue:
在遍历第一次进入该回调函数时,如果指定了initivalValue将直接使用initivalValue,如果没有指定将使用数组的第一个元素 第二次及以后的遍历该值是前一次遍历返回的结果 最后一次遍历返回的结果将作为reduce函数的返回值 currentValue: 遍历到的当前item index: 当前item在数组中的下标
array: 原始array
在execReplace中每一次执行时使用前一次替换后的结果作为原始替换字符串,使用当前item的index作为要被替换的内容,依次遍历,最终完成替换内容。
注:reduceRight和reduce函数基本一样,只是它的遍历顺序是由右向左
有用 | 无用
String.Format(“Welcome to learn '{0}','{0}' is awesome,you will {1} it!","Javascript","love");
这种有顺序的替换方式,比较清晰,而且在要替换同一内容时候可以省去传递重复参数的情况,下面是JS简单实现版本(没有严格测试):
(function(exports) {
exports.format = function(){
var args = Array.prototype.slice.call(arguments),
sourceStr = args.shift();
function execReplace(text,replacement,index){
return text.replace(new RegExp("\{"+index+"\}",'g'),replacement);
}
return args.reduce(execReplace,sourceStr);
}
})(window.utils = window.utils || {});
console.log(utils.format("Welcome to learn '{0}','{0}' is awesome,you will {1} it!","Javascript","love"));
关键的是这句:
args.reduce(execReplace,sourceStr);
这里使用了Array的reduce函数,reduce和reduceRight是ES5新增加的函数,该函数的参数是reduce(callback,initialValue),callback接收4个参数分别是:
previousValue:
在遍历第一次进入该回调函数时,如果指定了initivalValue将直接使用initivalValue,如果没有指定将使用数组的第一个元素 第二次及以后的遍历该值是前一次遍历返回的结果 最后一次遍历返回的结果将作为reduce函数的返回值 currentValue: 遍历到的当前item index: 当前item在数组中的下标
array: 原始array
在execReplace中每一次执行时使用前一次替换后的结果作为原始替换字符串,使用当前item的index作为要被替换的内容,依次遍历,最终完成替换内容。
注:reduceRight和reduce函数基本一样,只是它的遍历顺序是由右向左
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- jQuery截取指定长度字符串代码
- jquery实现的下拉和收缩效果示例
- 简单的jquery左侧导航栏和页面选中效果
- 使用jQuery设置disabled属性与移除disabled属性
- JS使用for循环遍历Table的所有单元格内容
- Javascript 绘制 sin 曲线过程附图
- json字符串之间的相互转换示例代码
- js设置控件的隐藏与显示的两种方法
- JS不能跨域借助jquery获取IP地址的方法
- jQuery添加/改变/移除CSS类及判断是否已经存在CSS
- jQuery CSS()方法改变现有的CSS样式
- JavaScript检查某个function是否是原生代码的方法
- 使用时间戳解决ie缓存的问题
- js中使用replace方法完成某个字符的转换
- js 动态修改css文件用到了cssRule
- jquery实现在页面加载的时自动为日期插件添加当前日期
- js匿名函数的调用示例(形式多种多样)
- javascript对中文按照拼音排序代码
- JS辨别访问浏览器判断是android还是ios系统