偶然遇到這個問題,感受有些意思,因而研究了一下。 php
下劃線轉駝峯比較簡單,直接根據下劃線打散成數組,每一個子項首字符轉大寫,再作字符串拼接便可。 正則表達式
駝峯轉下劃線風格,稍微複雜一些。剛開始我沒有思路,後來想到,能夠遍歷字符串,遇到大寫字母將其轉換成小寫,並在前面加一個下劃線。 數組
最終實現: 測試
class CamelTool{ //駝峯命名法轉下劃線風格 public static function toUnderScore($str){ $array = array(); for($i=0;$i<strlen($str);$i++){ if($str[$i] == strtolower($str[$i])){ $array[] = $str[$i]; }else{ if($i>0){ $array[] = '_'; } $array[] = strtolower($str[$i]); } } $result = implode('',$array); return $result; } //下劃線風格轉駝峯命名法 public static function toCamelCase($str){ $array = explode('_', $str); $result = ''; foreach($array as $value){ $result.= ucfirst($value); } return $result; } }
遍歷字符串,用到的很少,但PHP提供了這個強大的特性: code
for($i=0; $i< strlen($str);$i++){ echo $str[$i]; }
咱們能夠像遍歷數組同樣來操做字符串的每個字符。 字符串
如何檢測一個字母是大寫?剛開始我準備用正則表達式,但很快想到更簡單的方式: io
$str != strtolower($str);
若是該條件成立,$str 必定是大寫字母。 function
測試代碼是否正確運行: class
$str = 'user_point_log'; $result = CamelTool::toCamelCase($str); //輸出 UserPointLog echo $result; echo '<br/>'; $str = 'UserPointLog'; $result = CamelTool::toUnderScore($str); //輸出 user_point_log echo $result;