首页 > php代码 > PHP面试题之驼峰字符串转换成下划线样式例子

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

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

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

答案1:

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

答案2:

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

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

f = new File("d:/temp/t.txt")
if(f.exists()){
    f.eachLine{ line->
        line = line.trim()
        String[] elems = line.split('_')
        for(int i = 0; i < elems.length; i++){
            elems[i] = elems[i].toLowerCase()
            if(i != 0){
                String elem = elems[i]
                char first = elem[0] as char
                elems[i] = "" + (char)(first - 32) + elem.substring(1)
            }
        }
        println elems.join()
    }
}


本文地址:http://www.phprm.com/code/59093.html

转载随意,但请附上文章地址:-)

标签:substr

相关文章

发表留言