駝峯命名法和下劃線風格的互轉

偶然遇到這個問題,感受有些意思,因而研究了一下。 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;
相關文章
相關標籤/搜索