驼峰命名法和下划线风格的互转

偶然遇到这个问题,感受有些意思,因而研究了一下。 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;
相关文章
相关标签/搜索