JavaScript 学习笔记 -- String.trim + format
最近仍在IE6徘徊,低版本的浏览器没有实现JavaScript 的trim() 和 format(). . 主要是这两个使用的比较多,先整理出来:
1、trim() -- 去除字符串中开始和结尾部分,所包含的指定字符。 默认是 空格; 参考: http://www.nowamagic.net/javascript/js_TrimInJavascript.php
//prototype: trim
String.prototype.trim = function(strToRemove){
var reg = null;
// to trim space character, when not passing the param
if(strToRemove == null || strToRemove == undefined || strToRemove.length == 0){
reg = /(^\s*)|(\s*$)/g;
}
else{
reg = new RegExp("(^"+strToRemove+"*)|("+strToRemove+"*$)", "g");
}
return this.replace(reg, "");
}
//test: "abc,".trim(",") --- > abc
2、format() -- 格式化字符串(两种方式实现), 参考: http://www.cnblogs.com/nonlyli/archive/2008/08/14/1267480.html
A. 基于'实例'的方法,放在原型链上
//prototype: format
String.prototype.format = function() {
// need a variable to store the params to replace, or it will be overrided in the MatchedFunction
var args = arguments;
return this.replace(/{(\d+)}/g, function(m, i){ return args[i];});
}
//test: "abc{0}".format(123) --- > abc123
B. 基于'类'的方法,静态方法。 这个在原来的基础上做了更改,因为已经使用for循环了,再使用正则替换,感觉有点浪费了; 而且,这个方法和上一个只是,参数的位置不一致,向后移一位即可。。。
//static: format
String.format = function() {
var args = arguments;
if(args.length == 0){
return "Argument null";
}
var source_str = args[0];
return source_str.replace(/{(\d+)}/gm,
//attention:here, sub_index is String,need to convert to int when adding
function(item_matched, sub_index){
return args[parseInt(sub_index)+1];
}
);
}
//test: String.format("abc{1}", "123", 999) -- > abc999
这个format的静态方法,还有一个利用Slice的更巧妙的实现, 参考: http://witmax.cn/js-function-string-format.html
//another ingenious method to replace, using the slice method of Array,
// reference: http://witmax.cn/js-function-string-format.html
String.format = function(source_str){
var param_args = Array.prototype.slice.call(arguments, 1);
return source_str.replace(/{(\d+)}/gm,
function(item_matched, sub_index){
return param_args[sub_index];
}
);
}
JavaScript 学习笔记 -- String.trim + format的更多相关文章
- Java程序猿的JavaScript学习笔记(9—— jQuery工具方法)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿JavaScript学习笔记(2——复制和继承财产)
计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...
- Java程序猿JavaScript学习笔记(14——扩大jQuery UI)
计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...
- javascript学习笔记(四) Number 数字类型
数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数 toExponential() 方法 用科学 ...
- JavaScript学习笔记之数组(二)
JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...
- JavaScript学习笔记[0]
JavaScript学习笔记[0] 使用的是廖雪峰JavaScript教程. 数据类型 Number 表示数字,不区分浮点整形. === 比较时不转化数据类型. == 反之. NaN与任何值都不想等, ...
- Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- JavaScript:学习笔记(2)——基本概念与数据类型
JavaScript:学习笔记(2)——基本概念与数据类型 语法 1.区分大小写.Test 和 test 是完全不同的两个变量. 2.语句最好以分号结束,也就是说不以分号结束也可以. 变量 1.JS的 ...
- Java程序猿的JavaScript学习笔记(6——面向对象模拟)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
随机推荐
- Nodejs系列-01-开篇
1.解决什么问题 1. 并发连接 举个例子,想象一个场景,我们在银行排队办理业务,我们看看下面两个模型. (1)系统线程模型: 这种模型的问题显而易见,服务端只有一个线程,并发请求(用户)到达只能处理 ...
- 一款可以下拉搜索html下拉框控件
直接上图,组件不错,支持静态和动态搜索,这个只是在原控件上自己修改样式后的,这里主要记录一下,在修改别人控件时,应该如何去封装代码: 原控件:http://ivaynberg.github.com/s ...
- jQuery 仿百度输入标签插件
之前在做cms系统的时候,由于缺少tag的设计,准备自己搞一个,百般搜索,居然给我发现了一个无论在视觉和操作上都是非常爽的 原作者的地址:http://www.soso.io/article/1710 ...
- git恢复误删文件及省去密码提交
自己遇到这种情况:自己将某文件在网页的控制面板上直接删除了,再pull下来.或者一个成员误删除了某个文件,然后push到远程库了,其他成员也都pull了,结果就是所有人的本地库当前版本中这个文件都不见 ...
- ubuntu使用备忘
今天在一个古董机子上(03年的)安装了lubuntu14.04,内存512M,奔腾处理器,好像是什么迅驰不支持linux需要的某项技术pae,安装时提示cpu不支持pae,但可以在内核参数中添加for ...
- dedecms /member/flink_main.php SQL Injection Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 会员模块中存在的SQL注入 Relevant Link http://w ...
- Discuz X1.5 X2.5 X3 UC_KEY Getshell Write PHPCODE into config/config_ucenter.php Via /api/uc.php Vul
目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 在Discuz中,uc_key是UC客户端与服务端通信的通信密钥.因此使用uc_k ...
- AngularJs angular.forEach、angular.extend
angular.forEach 调用迭代器函数取每一项目标的集合,它可以是一个对象或数组.迭代器函数与迭代器(value.key)一起调用,其中值是一个对象属性或数组元素的值,而数组元素是对象属性的关 ...
- runtime笔记一
一.iOS中_cmd The _cmd variable is a hidden argument passed to every method that is the current selecto ...
- 《Java疯狂讲义》(第3版)学习笔记 1 - 如何学习Java
1.Java是一种面向对象语言,不要简单当做脚本使用.从基础学起,不要从Spring.J2EE.Hibernate和EJB开始学. 2.不要浮躁,应该扎扎实实先学好Java语言,然后按Java本身的学 ...