字符串翻转

描述:将句子“student. a am I ”转成“I am a student.”

<?php

$str = 'student. a am I';
//$str = 'I am a student.';

/**
 * @desc: 句子翻转(使用array方式)
 * @param null $str
 * @return string
 * @author: icehill
 * @date:
 */
function revSentence($str = null)
{
    $arr = explode(' ', $str);
    $len = count($arr);
    $res = '';
    for ($i = $len - 1; $i >= 0; $i--) {
        $res .= $arr[$i] . ' ';
    }
    return $res;
}

echo revSentence($str);echo "\t";

//字符串翻转
/**
 * @desc: 字符串翻转
 * @param $str
 * @return mixed
 * @author: icehill
 */
function reverseStr($str)
{
    //mb_strlen中文字符当作长度1来计算,strlen中文当做3
    if (strlen($str) <= 1) {
        return $str;
    }

    $len = strlen($str);
    $low = 0;
    $high = $len - 1;
    while ($low < $high) {
        $char = $str[$low];
        $str[$low] = $str[$high];
        $str[$high] = $char;
        $low++;
        $high--;
    }
    return $str;
}

/**
 * @desc: 句子翻转
 * @param null $str
 * @return string
 * @author: icehill
 */
function reverseSentence($str = null)
{
    $str = reverseStr($str);var_dump($str);
    $len = strlen($str);
    $low=0;
    $res='';
    for ($i = 0; $i < $len - 1; $i++) {
        if($str[$i]==' '){//遇见空字符认为是单词结尾
            //如果区分中文,则用mb_substr
            $res.=reverseStr(substr($str,$low,$i-$low));//单词翻转
            $res.=' ';
            $low=$i+1;
        }
    }
    $res.=reverseStr(substr($str,$low,$len-$low));
    return $res;
}

echo reverseSentence($str);


文章已完
作者心情:昨夜西风凋碧树,独上高楼,望尽天涯路。
如无特殊说明,文章均为本站原创,转载请注明出处
  • 转载请注明来源:字符串翻转
  • 本文永久链接地址:http://icehill.cn/post/single/info/219.html