[js高手之路] 跟GhostWu一起封装一个字符串工具库-扩展camelize与dasherize方法(3)

来源:互联网 发布:网络侵权管辖 编辑:程序博客网 时间:2024/06/06 17:43

在此之前,我们已经完成了4个方法: 

trimLeft, trimRight, trim, capitalize

本文,我们扩展驼峰式与下划线转化这两个对称的方法

camelize: 把空格,下划线,中横线后面的首字母大写.

dasherize: 把空格后面的大写字母,大写字母,下划线后面的大写字母,变成  中横线 + 对应的小写字母:

如: MozBorderRadius 变成 -moz-border-radius

 1 ; (function (window, undefined) { 2     function init(obj, s) { 3         if (s !== null && s !== undefined) { 4             if (typeof s === 'string') { 5                 obj.s = s; 6             } else { 7                 obj.s = s.toString(); 8             } 9         } else {10             obj.s = s;11         }12     }13 14     function G(s) {15         init(this, s);16     }17 18     function GhostWu(s) {19         return new G(s);20     }21 22     var sProto = String.prototype;23     G.prototype = {24         constructor: G,25         capitalize: function () {26             return new this.constructor(this.s.slice(0, 1).toUpperCase() + this.s.substring(1).toLowerCase());27         },28         trimLeft: function () {29             var s;30             if (sProto.trimLeft === 'undefined')31                 s = this.s.trimLeft();32             else33                 s = this.s.replace(/^\s+/g, '');34             return new this.constructor(s);35         },36         trimRight: function () {37             var s;38             if (sProto.trimRight === 'undefined')39                 s = this.s.trimRight();40             else41                 s = this.s.replace(/\s+$/g, '');42             return new this.constructor(s);43         },44         trim: function () {45             var s;46             if (typeof sProto.trim === 'undefined') {47                 s = this.s.replace(/^\s+|\s+$/g, '');48             } else {49                 s = this.s.trim();50             }51             return new this.constructor(s);52         },53         camelize : function () {54             var s = this.trim().s.replace(/(\-|_|\s)+(.)?/g, function ( s0, s1, s2 ) {55                 return ( s2 ? s2.toUpperCase() : '' );56             });57             return new this.constructor(s);58         },59         dasherize : function(){60             var s = this.trim().s.replace(/[_\s]+/g, '-').replace(/([A-Z])/g, '-$1').replace(/-+/g, '-').toLowerCase();61             return new this.constructor(s);62         }63     };64 65     window.G = GhostWu;66 })(window, undefined);
console.log( G( 'ghost wu tell you how to learn js').camelize().s );//ghostWuTellYouHowToLearnJs
console.log( G( 'ghost-wu-tell you how to learn js').camelize().s );//ghostWuTellYouHowToLearnJs
console.log( G( 'ghost_wu_tell you how to learn js').camelize().s );//ghostWuTellYouHowToLearnJs
console.log( G( '-moz-border-radius' ).camelize().s );//MozBorderRadius

console.log( G( 'MozBorderRadius' ).dasherize().s ); //-moz-border-radius
console.log( G( 'backgroundColor' ).dasherize().s ); //background-color
console.log( G( 'background color' ).dasherize().s ); //background-color

 

阅读全文
0 0