2010-03-11 6 views
2

문자열을 왼쪽 N 번 회전시키는 방법을 찾고 있습니다. 다음은 몇 가지 예는 다음과 같습니다PHP에서 문자열 N 번 회전

나는 그것을 2 시간을 회전하면 내가 그것을 회전하면 내가 cdefab

  • 을 원하는 bcdefa
  • 을 원하는 1 시간으로 회전하는 경우 문자열이 abcdef

    • 을하자 3 시간이 필요합니다. defabc
    • .
    • .
    • 문자열의 길이를 으로 변경하면 원래 문자열이 반환됩니다.
  • 답변

    15
    $rotated = substr($str, $n) . substr($str, 0, $n); 
    
    +0

    감사합니다. stereooforg. 이 작동합니다. – gameover

    +3

    '$ n '이 문자열의 길이보다 큰 경우 작동하지 않겠습니까? – Svish

    +1

    $ n> 문자열 길이 인 경우 원래 문자열을 반환합니다. – Gordon

    2
    function rotate_string ($str, $n) 
    { 
        while ($n > 0) 
        { 
         $str = substr($str, 1) . substr($str, 0, 1); 
         $n--; 
        } 
    
        return $str; 
    } 
    
    1

    가이에 대한 표준 기능이 없지만 쉽게 구현된다.

    function rotate_left($s) { 
        return substr($s, 1) . $s[0]; 
    } 
    
    function rotate_right($s) { 
        return substr($s, -1) . substr($s, 0, -1); 
    } 
    

    회전 할 문자 수에 대한 선택적 매개 변수를 추가하기 위해이 값을 확장 할 수 있습니다. 여기

    2

    관계없이 입력 스트링의 길이, 좌우 임의의 이동을 허용 한 변종이다

    function str_shift($str, $len) { 
        $len = $len % strlen($str); 
        return substr($str, $len) . substr($str, 0, $len); 
    } 
    
    echo str_shift('abcdef', -2); // efabcd 
    echo str_shift('abcdef', 2); // cdefab 
    echo str_shift('abcdef', 11); // fabcde 
    
    0

    사용 코드

    <?php 
        $str = "helloworld" ; 
        $res = string_function($str,3) ; 
        print_r ($res) ; 
        function string_function ($str , $count) 
        { 
        $arr = str_split ($str); 
        for ($i=0; $i<$count ; $i++) 
        { 
         $element = array_pop ($arr) ; 
         array_unshift ($arr, $element) ; 
        } 
        $result=(implode ("",$arr)) ; 
        return $result; 
        } 
        ?> 
    
    1
    function rotate_string($str) { 
        for ($i=1; $i<strlen($str)+1;$i++) { 
         @$string .= substr($str , strlen($str)-$i , 1); 
        } 
        return $string; 
    } 
    
    echo rotate_string("string"); //gnirts 
    
    0

    N 회전 할 수도 있습니다. 이런 식으로 문자열을.

    $str = "Vijaysinh"; 
    $arr1 = str_split($str); 
    $rotated = array(); 
    $i=0; 
    
    
        foreach($arr1 as $a){ 
         $t = $arr1[$i]; 
         unset($arr1[$i]); 
         $rotated[] = $t.implode($arr1); 
         $arr1[$i] = $t; 
         $i++; 
        } 
        echo "<pre>";print_r($rotated);exit; 
    
    관련 문제