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

    在此之前,我们已经完成了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             else
    33                 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             else
    41                 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
  • 相关阅读:
    求子数组最大和
    <转>Android APP字体大小,不随系统的字体大小变化而变化的方法
    模块25 pageobject改造【进阶】
    第5阶段直播
    web测试-赠送课程
    模块四 -使用postman发送请求
    模块三 使用tcpdump抓包分析tcp三次握手四次挥手
    模块二 常见接口协议解析
    20200611_19元素操作
    20200609_18八大元素定位
  • 原文地址:https://www.cnblogs.com/ghostwu/p/7402094.html
Copyright © 2011-2022 走看看