网站地图    收藏   

主页 > php专栏 > php面试题 >

PHP面试题之驼峰字符串转换成下划线样式例子

来源:未知    时间:2014-11-24 23:38 作者:xxadmin 阅读:

[导读] 在PHP中,用你认为最简洁的方法把驼峰样式的字符串转换成下划线样式的字符串,例:输入是FooBar的话,输出则是foo_bar. 自己在看到这个问题的时候,想到的是用ASCII码来处理,没往万能的正则...

在PHP中,用你认为最简洁的方法把驼峰样式的字符串转换成下划线样式的字符串,例:输入是FooBar的话,输出则是foo_bar.

自己在看到这个问题的时候,想到的是用ASCII码来处理,没往万能的正则上去想,好吧,下面来看看答案.

答案1,代码如下:

  1. $str = 'OpenAPI'
  2. $length = mb_strlen($str); 
  3. $new = ''
  4. for($i = 0; $i < $length$i++) 
  5.  $num = ord($str[$i]); 
  6.  $pre = ord($str[$i - 1]); 
  7.  $new .= ($i != 0 && ($num >= 65 && $num <= 90) && ($pre >= 97 && $pre <= 122)) ? "_{$str[$i]}" : $str[$i]; 
  8. echo strtolower($new) . '<br>'

答案2,代码如下:

echo strtolower(preg_replace('/((?<=[a-z])(?=[A-Z]))/', '_', $str)).'<br>';

那反过来下划线分割字符串转换成驼峰式字符串怎么搞呢,代码如下:

  1. f = new File("d:/temp/t.txt"
  2. if(f.exists()){ 
  3.     f.eachLine{ line-> 
  4.         line = line.trim() 
  5.         String[] elems = line.split('_'
  6.         for(int i = 0; i < elems.length; i++){ 
  7.             elems[i] = elems[i].toLowerCase() 
  8.             if(i != 0){ 
  9.                 String elem = elems[i] 
  10.                 char first = elem[0] as char 
  11.                 elems[i] = "" + (char)(first - 32) + elem.substring(1) 
  12.             } 
  13.         } 
  14.         println elems.join() 
  15.     } 
  16.  

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论