保留原位置大小写字符串反转,请问这个题该怎么实现比较好

输入一句话,单词用空格分离,将每个单词反转,转换以后原位置字母的大小写保持跟原来一样

后面个要求似乎有歧义,我再解释一下:原来第几个大写,转完以后还是第几个大写,不是原来大写的字母还是大写,就像例子这样,好好看例子呀。

例如:

Hello World 输出 Olleh Dlrow

SWAT 输出 TAWS

I am A sTudent 输出 I ma A tNeduts

紫衣仙女
浏览 397回答 3
3回答

跃然一笑

思路:先通过空格将字符串分隔成单独的单词,然后通过strres进行字符串反转,通过判断反转前每个字符的大小写对反转后的单词的每个字符进行大小写相应的转换,加一层判断即可 执行结果 code: <?php function reverse($str) { $words = explode(' ', $str); $new_words = ''; foreach ($words as &$word) { $rev_word = strrev($word); $new_word = ''; for ($i =0; $i < strlen($word); $i++) { $new_word .= preg_match('/^[A-Z]+$/', $word[$i]) ? strtoupper($rev_word[$i]) : strtolower($rev_word[$i]); } $new_words .= $new_word. ' '; } return substr($new_words, 0, -1); } var_dump(reverse('Hello World')); var_dump(reverse('SWAT')); var_dump(reverse('I am A sTudent')); ?>

翻翻过去那场雪

句子分成单词,单词分成字母数组,然后反转.这里为止都是一步一步做就好,最后对齐大小写。我的想法是用原顺序对比ctype_lower,检测出来之后修改新顺序的大小写状态即可。不知大神们是否有其他方案。
打开App,查看更多内容
随时随地看视频慕课网APP