String.format in JavaScript
来源:互联网 发布:php exec 异步 编辑:程序博客网 时间:2024/04/30 08:54
突然发现做菜鸟也有别样的乐趣,虽然总是心里发虚,但是有很多从未触及的空间,很容易就能找到可以学习和前进的部分,在一个新领域从零开始不断充实自己其实真是个很愉快的过程。周日的下午,一边喝点热茶一边码点代码,伴着《晚风》,惬意得很。
以上废话
问题
在做javascript的入门练习,有一个要求是以形如“今天是某年某月某日 星期几”的格式显示当前日期,我想当然地搬用了c#里常用的String.format函数,也很顺理成章地在firebug里收到了错误提示“TypeError: String.format is not a function”,后来去网上一查,原来javascript并没有原生的字符串format方法,需要自行构建。
解决
在网上找了一段现成的代码(代码转自:http://icodon.com/string-format-by-javascript.html),经测试可用:
String.format = function (){ var param = []; for (var i = 0, l = arguments.length; i < l; i++) { param.push(arguments[i]); } var statment = param[0]; // get the first element(the original statement) param.shift(); // remove the first element from array return statment.replace(/\{(\d+)\}/g, function(m, n) { return param[n]; });}
说明
1.为什么用String.format而不是String.prototype.format?
这里就应该用静态方法,可以不经实例化直接调用。
2.Array的shift()方法
shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
所以,
var statment = param[0];param.shift();
这两行可以合写成一行:
var statment = param.shift();
3.
statment.replace(/\{(\d+)\}/g, function(m, n) { return param[n]; });
/{(\d+)}/g:
* 起始/与结尾/之间:正则表达式内容
* g:全局匹配
* \{:匹配{,\是转义符
* \}:匹配},\是转义符
* (\d+):子表达式,匹配至少一个数字
* function(m,n){}:m值对应匹配到的字符,如“{0}”,n值对应子表达式匹配的字符,如“0”,用这个n值作为数值key,取param里的attribute
使用
var str = String.format("今天是{0}年{1}月{2}日", year, month, date);
- String.Format in JavaScript
- String.Format in javascript
- String.format in JavaScript
- JavaScript String format
- Format number in Javascript
- Advances in format string exploitation
- NSDate format string in objective-c
- String.Format
- string.format()
- string format
- string.Format
- String.format()
- String.Format
- String format
- string.Format
- string.Format
- string.format
- string.Format
- 【SICP练习】145 练习4.1
- 获取存储卡路劲的方式
- POJ 1723 SOLDIERS
- Android 网络通信框架Volley简介(Google IO 2013)
- Ubuntu + coreseek + python + mysql(一、配置环境)
- String.format in JavaScript
- 独立开发者:新手做2D手游该用哪些工具?
- CodeBlocks创建FLTK项目的向导配置
- iOS应用性能调优的25个建议和技巧
- 一维数组、二维数组用数学公式初始化以及二维数组的行坐标可省
- Doubango与编译学习相关资料----来自好友王阳(他的博客http://blog.163.com/dream_burgeon/blog/static/235007155201469104240)
- python super()
- 为什么这个NsMutableDictionary 的 RemoveAllObject 会报错?我来解答
- Andriod fragment调用Activity函数方法