首页 > 开发 > PHP > 正文

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

2024-05-04 23:06:33
字体:
来源:转载
供稿:网友

在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.     } 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表