PHP面試題之駝峯字符串轉換成下劃線樣式例子

本身在看到這個問題的時候,想到的是用ASCII碼來處理,沒往萬能的正則上去想。好吧,下面來看看答案:php

答案1:.net

代碼以下 複製代碼
$str = 'OpenAPI';htm

$length = mb_strlen($str);字符串

$new = '';get

for($i = 0; $i < $length; $i++)
{
$num = ord($str[$i]);
$pre = ord($str[$i - 1]);string

$new .= ($i != 0 && ($num >= 65 && $num <= 90) && ($pre >= 97 && $pre <= 122)) ? "_{$str[$i]}" : $str[$i];
} www.111cn.netit

echo strtolower($new) . '<br>';
im

答案2:join

代碼以下 複製代碼
echo strtolower(preg_replace('/((?<=[a-z])(?=[A-Z]))/', '_', $str)).'<br>';
字符

那反過來下劃線分割字符串轉換成駝(www.111cn.net)峯式字符串怎麼搞呢

代碼以下 複製代碼
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()
}
}

from:http://www.111cn.net/phper/php-cy/59093.htm

相關文章
相關標籤/搜索