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 ...
随机推荐
- 表头不动,内容滚动的例子(纯css+html)
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- Teamviewer11现在无法捕捉屏幕画面。这可能是由于快速的用户切换或远程桌面会话断开/最小化。
如果你用“远程桌面”连过去开启Teamviewer的话,当你退出“远程桌面”后,外网用Teamviewer连接就会出现这个问题. 解决方法: 不用远程连接过去开启Teamviewer,直接在在电脑本机 ...
- Linux列出安装过的程序
命令行: dpkg -l apt-cache(模糊搜索apt-cache search 包名) pkgnames yum list(ubuntu下试了无效) rpm -aq(ubuntu下试了无效)
- poj2318
题意:把一个矩形划分成n部分,再给出一堆点,求每个部分内落入了多少点 sol attempt1:暴力 注意每个polygon中的点要按笔画的顺序排列好.还有就是有的点可能落在了upper or low ...
- 用Python写了个抓图小脚本
看上这个网页上一张图了,可惜他没有提供右键另存为,看了下网页代码,是可以找到图片原始链接的!但是因为没法和现实的图片一一对应,图又多,所以找起来还是麻烦...然后,我就想用 Python 把他们全部拉 ...
- iOS Keychain钥匙串,应用间数据共享打造iOS上的全家桶
Demo先行:https://github.com/rayshen/GIKeychainGroupDemo 该demo里有2个工程,你先运行任何一个会存储一个值,再运行另一个会访问之前的app存储的值 ...
- xpath中/和//的差别
xpath中 "/"是在子节点中查找,"//"是在所有子节点中查找,包括子节点的子节点. example: leve1/leve2:得到文本leve2 leve ...
- [Android]Volley源码分析(一)
一. 如何使用Volley? 1. 首先定义一个RequestManager类,用来在Android程序启动时对Volley进行初始化.RequestManager为单例类,因为只有在程序启动时调用, ...
- 【Alpha版本】测试文档
App测试点 UI测试 测试各界面控件布局.总体色调.风格是否能够给用户良好的使用感. 文字是否正确,图文符合,文字与图片的组合是否够美观. 操作是否友好,是否易于操作,是否繁琐,存在无用操作. 配图 ...
- 精通javascript(看书笔记)
变量的类型检查 //检测类型 var str = "Hello World"; if (typeof str=="string") {//使用typeof来判断 ...