【发布时间】:2011-08-18 04:20:08
【问题描述】:
如何将字符串中的所有其他字母大写?我知道如何转换为较低或较高或第一个等,但不知道如何相互转换。为了清楚起见,我已经包含了示例。这也是为了创建我儿子和我正在搞乱的密码,我永远不会以这种方式格式化常规文本。
pizza -> PiZzA
party -> PaRtY
popcorn -> PoPcOrN
【问题讨论】:
-
+1 包含示例和非常清晰的解释。 :)
如何将字符串中的所有其他字母大写?我知道如何转换为较低或较高或第一个等,但不知道如何相互转换。为了清楚起见,我已经包含了示例。这也是为了创建我儿子和我正在搞乱的密码,我永远不会以这种方式格式化常规文本。
pizza -> PiZzA
party -> PaRtY
popcorn -> PoPcOrN
【问题讨论】:
$newStr = '';
foreach(str_split($str) as $index => $char) {
$newStr .= ($index % 2) ? strtolower($char) : strtoupper($char);
}
【讨论】:
? 语句)来检查位置是否是偶数。如果是偶数,请将其大写 - 否则请确保它是小写的。祝你好运!反响不错。 +1
foreach() 是一个数组迭代器,所以只需将数组直接传递给它。我用str_split()将字符串转换成数组,所以foreach()不会抱怨。
我会尝试这样的:
$string = join(
array_map(
function($s){
return ucfirst($s);
},
str_split($string,2)
)
);
或者,作为单行:
$string = join(array_map(function($s){return ucfirst($s);}, str_split($string,2)));
您可以概括将要大写的块的长度作为参数传递的函数 并让功能完成工作。算法很简单:
最终的功能是:
function camelCycles($string, $period) {
return join(
array_map(
function($s){
return ucfirst($s);
},
str_split($string, $period)
)
);
}
它只使用原生结构,因此应该很快。
编辑:
一个不使用 lambda 的函数,因此适用于 PHP 5.0 及更高版本,因为 str_split 是在 php5 版本中引入的
function camelCycles($string, $span) {
return join(array_map('ucfirst', str_split(strtolower($string), $span)));
}
【讨论】:
'' 参数删除到 join() 并且它会更短:)
我会将它拆分为一个数组,然后将其重新连接在一起:
function strtoupper_lower($str){
$temp = explode('',$str);
$return = '';
foreach($temp as $i=>$val){
if($i%1 == 0) $return .= strtolower($val);
else $return .= strtolower($val);
}
return $return;
}
【讨论】:
function spasticafy($st)
{
$r = '';
$n = false;
foreach(str_split($st) as $i)
{
$r .= ($n ? strtoupper($i) : $i);
$n = !$n;
}
return $r;
}
echo spasticafy("hello there, mr person sir");
【讨论】: