Mootools源码分析 — String



            //对字符串类型的扩展实现
String.implement({
//Regex实例方法test的快捷方式
test: function(regex, params){
  return ((typeof regex == 'string') ? new RegExp(regex, params) : regex).test(this);
},
/*测试字符串中是否包含指定子串
  配合separator参数可以测试类似逗号分隔序列中是否包含指定的项
  例如:'jpg,gif,png'.contains(file_ext_name, ',')
*/
contains: function(string, separator){
  return (separator) ? (separator + this + separator).indexOf(separator + string + separator) > -1 : this.indexOf(string) > -1;
},
//过滤字符串中的前导及后导空白
trim: function(){
  return this.replace(/^\s+|\s+$/g, ”);
},
//将连续空白替换为一个空格
clean: function(){
  return this.replace(/\s+/g, ' ').trim();
},
//将字符串骆驼化(各单词首字母大写),与hyphenate、capitalize配合,通常用于变量/属性名
camelCase: function(){
  return this.replace(/-\D/g, function(match){
  return match.charAt(1).toUpperCase();
  });
},
//骆驼字符连接化
hyphenate: function(){
  return this.replace(/[A-Z]/g, function(match){
  return (’-’ + match.charAt(0).toLowerCase());
  });
},
//使首字母大写
capitalize: function(){
  return this.replace(/\b[a-z]/g, function(match){
  return match.toUpperCase();
  });
},
//转义正则字符串
escapeRegExp: function(){
  return this.replace(/([-.*+?^${}()|[\]\/\\])/g, ‘\\$1′);
},
//parseInt的快捷方式
toInt: function(base){
  return parseInt(this, base || 10);
},
//toFloat的快捷方式
toFloat: function(){
  return parseFloat(this);
},
//十六进制颜色表示转为RGB表示
hexToRgb: function(array){
  var hex = this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);
  return (hex) ? hex.slice(1).hexToRgb(array) : null;
},
//十六进制颜色表示转为RGB表示
rgbToHex: function(array){
  var rgb = this.match(/\d{1,3}/g);
  return (rgb) ? rgb.rgbToHex(array) : null;
},
//RGB颜色表示转为十六进制表示
stripScripts: function(option){
  var scripts = '';
  var text = this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
  scripts += arguments[1] + ‘\n’;
  return ”;
  });
  if (option === true) $exec(scripts);
  else if ($type(option) == ‘function’) option(scripts, text);
  return text;
},
/*
类似format的一种替换方式,根据提供的regexp匹配对的子串,用相应的object对象属性来替换
例如:
  var student = new Student('John', 'male', 17);
  alert('{name} is a {sex}, and {age} years old.'.substitute(student));
将显示
  John is a male, and 17 years old.
是不是很优雅?
*/
substitute: function(object, regexp){
  return this.replace(regexp || (/\\?\{([^}]+)\}/g), function(match, name){
  if (match.charAt(0) == ‘\\’) return match.slice(1);
  return (object[name] != undefined) ? object[name] : ”;
  });
}
});
                                                         


金鳞岂是池中物,一遇风云便化龙