チェンジセット 908

差分発生行の前後
無視リスト:
コミット日時:
2008/07/29 20:40:31 (4 年前)
コミッタ:
michi
ログメッセージ:

StringUtil? クラスの camelize と decamelize をちょっと変更。

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/Utils/src/org/libspark/utils/StringUtil.as

    r804 r908  
    5656                * 半角スペースを削除し、次の文字を大文字に変換します。 
    5757                * @author       taka:nium 
     58                *           michi at seyself.com 
    5859                * @param        str             変換したい String です。 
    5960                * @return                       変換後の String です。 
     61                * @example 以下のコードでは action script 3.0 language reference という文字列を変換し出力ます。 
     62                * <listing> 
     63                * var str:String = "action script 3.0 language reference"; 
     64                *  
     65                * trace(StringUtil.camelize(str)); 
     66                * // output : ActionScript3.0LanguageReference 
     67                *  
     68                * trace(StringUtil.decamelize(StringUtil.camelize(str))); 
     69                * // output : action script 3.0 language reference 
     70                * </listing> 
    6071                *//*=======================================================================*/ 
    6172                static public function camelize( str:String ):String { 
    62                         var words:Array = str.split( " " ); 
    63                         var l:int = words.length; 
    64                         for ( var i:int = 0; i < l; i++ ) { 
    65                                 words[i] = toUpperCaseFirstLetter( words[i] ); 
    66                         } 
    67                         return words.join( "" ); 
     73                        return str.replace(/(\s|^)(\w)/g,  
     74                                function(...$):String { return $[2].toUpperCase(); }); 
    6875                } 
    6976                 
     
    7178                * 大文字の String を、区切り文字と小文字化した String に変換します。 
    7279                * @author       taka:nium 
     80                *           michi at seyself.com 
    7381                * @param        str                     変換したい String です。 
    7482                * @param        separater       区切り文字として使用したい String です。 
    7583                * @return                               変換後の String です。 
     84                * @example 以下のコードでは action script 3.0 language reference という文字列を変換し出力ます。 
     85                * <listing> 
     86                * var str:String = "action script 3.0 language reference"; 
     87                *  
     88                * trace("output : " + StringUtil.camelize(str)); 
     89                * // output : ActionScript3.0LanguageReference 
     90                *  
     91                * trace("output : " + StringUtil.decamelize(StringUtil.camelize(str))); 
     92                * // output : action script 3.0 language reference 
     93                * </listing> 
    7694                *//*=======================================================================*/ 
    7795                static public function decamelize( str:String, separater:String = " " ):String { 
    78                         return str.replace( new RegExp( "[a-z][A-Z]", "g" ), function():String { 
    79                                 return String( arguments[0] ).toLowerCase().split( "" ).join( separater ); 
    80                                 } ); 
     96                        return str.replace( /(([^.\d])(\d)|[A-Z])/g,  
     97                                function(...$):String { 
     98                                        if($[2]) return $[2] + separater + $[3].toLowerCase(); 
     99                                        if($[4]==0) return $[0].toLowerCase(); 
     100                                        return separater + $[0].toLowerCase(); 
     101                                }); 
     102                        //return str.replace( new RegExp( "[a-z][A-Z]", "g" ), function():String { 
     103                                //return String( arguments[0] ).toLowerCase().split( "" ).join( separater ); 
     104                                //} ); 
    81105                } 
    82106