您的位置:首页 > 编程语言 > PHP开发

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

2015-10-16 15:14 573 查看
偶然遇到这个问题,感觉有些意思,于是研究了一下。

下划线转驼峰比较简单,直接根据下划线打散成数组,每个子项首字符转大写,再做字符串拼接即可。

驼峰转下划线风格,稍微复杂一些。刚开始我没有思路,后来想到,可以遍历字符串,遇到大写字母将其转换成小写,并在前面加一个下划线。

最终实现:

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提供了这个强大的特性:

for($i=0; $i< strlen($str);$i++){
echo $str[$i];
}


我们可以像遍历数组一样来操作字符串的每一个字符。

如何检测一个字母是大写?刚开始我准备用正则表达式,但很快想到更简单的方式:

$str != strtolower($str);

如果该条件成立,$str 一定是大写字母。

测试代码是否正确运行:

$str = 'user_point_log';
$result = CamelTool::toCamelCase($str);
//输出 UserPointLog
echo $result;

echo '<br/>';

$str = 'UserPointLog';
$result = CamelTool::toUnderScore($str);
//输出 user_point_log
echo $result;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php