考核目标:字符串操作
案例描述:
字符串1:Swift NSLayoutConstraint
字符串2:Tfiws TNIartsnOctuoyalsn
按上边字符串1转换到字符串2 的规律,编写一个字符串处理函数。
解决方法 1:
<?php header('content-type:text/html;charset=utf-8'); error_reporting( E_ALL&~E_NOTICE ); $str = "Swift NSLayoutConstraint"; /*$arr = explode(" ",$str); //print_r($arr);die; for($j = 0; $j < count($arr); $j++) { for ($i = 0; $i < strlen($arr[$j]); $i++) { if (checkcase($arr[$j][$i]) == 1) { $key[$j][$i] = $i; } } } //print_r($key); $str = strtolower($str); $new_arr = explode(" ",$str); for($j = 0; $j < count($new_arr); $j++) { $new_arr[$j] = strrev($new_arr[$j]); } print_r($new_arr); for($j=0; $j<count($new_arr);$j++) { for ($i = 0; $i < strlen($new_arr[$j]); $i++) { foreach ($key[$j] as $k => $v) { if ($k == $i) { $new_arr[$j][$i] = strtoupper($new_arr[$j][$i]); } } } } print_r($new_arr); function checkcase($str){ if(preg_match('/^[A-Z]$/', $str)){ return 1; } }*/ /
方法 二:
*$str = "Swift NSLayoutConstraint"; //得到字符串大写的位置 $new_str = str_split($str); foreach($new_str as $k=>$v){ if(preg_match('/^[A-Z]$/', $v)){ $key[] = $k; } } //翻转 变小写 变数组 $new_arr = explode(" ",$str); //print_r($new_arr);die; foreach($new_arr as $k=>$v){ $new_arr[$k] = strtolower(strrev($v)); $str1 .= $new_arr[$k]." "; } $new_arr1 = str_split($str1); foreach($key as $v){ $new_arr1[$v] = strtoupper($new_arr1[$v]); } $result_str= implode($new_arr1); echo $result_str;*/
方法 三
/*字符串1:Swift NSLayoutConstraint 字符串2:Tfiws TNIartsnOctuoyalsn 按上边字符串1转换到字符串2 的规律,编写一个字符串处理函数。 */ $str1 = "Swift NSLayoutConstraint"; $len=strlen($str1); $str_xiao=strtolower($str1);//全部转化为小写 //函数 作用 //array_map(); 数组函数:将回调函数作用到给定数组的单元上 //explode(); 字符串函数:使用一个字符串(或符号)分割另一个字符串 成为一个数组 //implode(); 数组函数:使用一个字符串(或符号)将一个数组连接为一个字符串 //strrev(); 字符串函数:将一个给定的字符串实现反转 $str2=implode(' ',array_map('strrev',explode(' ',$str_xiao))); //在这里应用了四个函数 //1.应用explode函数 通过字符串的空格 实现把字符串转换为数组 //2.应用array_map函数 将数组的内容 实现反转 //3.应用implode函数 将反转后的数组 重新连接为字符串 for ($i=0; $i < $len; $i++) { checkcase($str1[$i])?$str2[$i]=strtoupper($str2[$i]):$str2[$i]=strtolower($str2[$i]); //解释:三目运算符 //在for循环中 调用下方的自定义函数 来判断每一个字母的大小写 //true 则使用strtoupper将该字母变成大写 //false 则使用strtolower将该字母变小写 } function checkcase($aa){ if(preg_match('/^[A-Z]+$/', $aa))//通过正则判断大小写 { return true; }else{ return false; } } echo $str2;//最后输出
请各位指正批评