首页 > 走进后端

php驼峰风格的字符串和下划线风格的字符串想换转换

时间:2016-10-28|浏览次数:1629次

写这篇文章也是在项目中偶然遇到,顺便写下代码封装成一个类。这里实现的核心是php的

strlen($str)

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

其次如何检测一个字母是大写?其实我第一眼想到的是正则,但是想到正则表达式是效率极地的(自己下定决心以后不第一时间想正则),所以就采用了更简单的方式

$str != strtolower($str);

好了,接下来就直接献上代码:

<?php
/**
 * @copyright Copyright (c) 2016 上海稻壳网络科技有限公司
 * @link http://www.dookay.com/
 * @create Created on 2016/10/28
 */

namespace app\components\helpers;


/**
 * 字符串帮助类
 *
 * @author xiaopig <xiaopig123456@qq.com>
 * @since 1.0
 */
class StringHelper extends \yii\helpers\StringHelper
{

    /**
     * 驼峰字符串转换成有指定连接符和小写字母
     * @param string $str
     * @param string $connector
     * @return string
     */
    static public function humpTo($str,$connector = '_'){
        $array = array();
        for($i=0;$i<strlen($str);$i++){
            if($str[$i] == strtolower($str[$i])){
                $array[] = $str[$i];
            }else{
                if($i>0){
                    $array[] = $connector;
                }
                $array[] = strtolower($str[$i]);
            }
        }

        return implode('',$array);
    }

    /**
     * 有指定连接符转成驼峰字符串
     * @param string $str
     * @param string $connector
     * @return string
     */
    static public function toHump($str,$connector = '_'){
        $array = explode($connector, $str);
        $result = '';
        foreach($array as $value){
            $result.= ucfirst($value);
        }

        return $result;
    }

}

此类继承Yii2的yii\helpers\StringHelper类,用来扩展Yii提供的字符串帮助类。