[转帖]Mootools源码分析-10 -- String

it2022-05-12  44

原帖地址:http://space.flash8.net/space/?uid-18713-action-viewspace-itemid-401801

原作者:我佛山人

 

// 对字符串类型的扩展实现 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颜色表示转为十六进制表示     stripscrīpts:  function (option)    {         var  scrīpts  =   '' ;         var  text  =   this .replace( / <scrīpt[^>]*>([\s\S]*?)<\ / scrīpt > / gi, function()    {             scrīpts  +=  arguments[ 1 +   ' \n ' ;             return   '' ;        });         if  (option  ===   true )    $exec(scrīpts);         else   if  ($type(option)  ==   ' function ' )    option(scrīpts, 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] :  '' ;        });    }});

 

转载于:https://www.cnblogs.com/maapaa/articles/mootools-s-10.html

相关资源:数据结构—成绩单生成器

最新回复(0)