ios 字符串转数组_字符串转驼峰式

3b5277470c1f40e6071da1e7b7d5c7bb.png

这道题描述起来也是十分地简单,就是把原先用 '-','_'隔开的字符串转为驼峰法,也就是单词紧贴在一起,且单词的首字母大写(除了第一个单词之外)。我的想法是,将字符串按照 '-','_' 分割成多个数组,再将一个个数组,也就是单词拼接起来,就是我们需要的了。

function toCamelCase($str){
  $str = str_replace('_','-',$str);
  $array = explode('-',$str);
  $newStr = $array[0];
  for($i=1;$i<count($array);$i++) {
    $newStr .= ucfirst($array[$i]);
  }
  return $newStr;
}

不过像这种对字符串的查找、替换等操作,用正则应该才是正解,接下来是大佬们的代码。

1、使用preg_replace_callback函数,第一个参数是正则表达式匹配到的字符,第二个参数是执行的回调函数,第三个参数是目标(字符串或者数组)。
使用正则匹配到 '-字母' 或者 '_字母' 的情况,然后所有的匹配位置都会以参数的形式传入到回调函数中,再执行回调函数,使首字母大写。
function toCamelCase($str){
  return preg_replace_callback("~[_-](w)~", function($m) { return strtoupper($m[1]); }, $str);
}
function toCamelCase($str){
    $str = str_replace("-", "_",$str);
    //获取第一个'-'出现的位置
    $firstPos = strpos($str, "_");
    //substr截取第一个单词,str_replace替换字符,ucwords将单词首字母转大写,以第二个参数为分隔符
    return substr($str,0,$firstPos).str_replace("_", "",ucwords(substr($str,$firstPos), "_"));
}
//str_replace(['_','-'],' ',$str)
,把-和_都转化为空格,然后ucwords实现首字母大写,再substr(sting,1),从第二个字符开始获取字符串,再拼接上$str[0],最后删除空格,任务完成。这里有个细节是,不能直接substr(sting,0),这样子第一个单词首字母会大写,与题目要求不符合。
function toCamelCase( $str ){
  return 
    str_replace(' ','', $str[0].
      substr(
        ucwords(
          str_replace(['_','-'],' ',$str)
        ), 1
      )
    );
}

看了大神的代码,真的是感觉太强了,还需要多多学习呀!

另外,如果你有兴趣,或者是有问题想要与我探讨,欢迎来访问我的博客:https:http://mu-mu.cn/blog

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值