我想將字符串WhatAWonderfulDay
變成一個小寫字符串,其中所有的大寫字符前面都帶有下劃線,例如, what_a_wonderful_day
。此外,我正在嘗試製作一個反向算法,將a_quick_fox
翻譯爲AQuickFox
。預先在字符串中加下劃線的大寫字母
我正在提供我的實現,但我知道它效率低下。任何方法來簡化這兩個操作?
// 1. WhatAWonderfulDay -> what_a_wonderful_day
$chars = str_split('WhatAWonderfulDay');
$result = "";
foreach($chars as $char) {
if (ctype_upper($char) && !empty($result))
$result .= "_"
$result .= $char;
}
echo $result;
// 2. a_quick_fox => AQuickFox
$chars = str_split('a_quick_fox');
$result = "";
$should_make_upper = true;
foreach($chars as $char) {
$result .= (should_make_upper) ? strtoupper($char) : $char;
$should_make_upper = false;
if ($char == "_")
$should_make_upper = true;
}
echo $result;
這最好用正則表達式 – user3791775
做@ user3791775沒錯,但你能詳細說明一下嗎? – Alex
在正則表達式中使用'preg_replace'只選擇大寫字母。你應該檢查[preg_replace](http://php.net/manual/en/function.preg-replace.php)的文檔。 – Marcs