我正在寻找一种方法将字符串向左旋转N次。以下是一些例子:
让字符串为abcdef
1
时间旋转,我想要的时间
bcdefa
2
时间旋转,我想要的时间
cdefab
3
时间旋转,我想要的时间
defabc
答案 0 :(得分:16)
$rotated = substr($str, $n) . substr($str, 0, $n);
答案 1 :(得分:3)
这是一个允许任意向左和向右移动的变体,无论输入字符串的长度如何:
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
答案 2 :(得分:2)
function rotate_string ($str, $n)
{
while ($n > 0)
{
$str = substr($str, 1) . substr($str, 0, 1);
$n--;
}
return $str;
}
答案 3 :(得分:1)
没有标准功能,但很容易实现。
function rotate_left($s) {
return substr($s, 1) . $s[0];
}
function rotate_right($s) {
return substr($s, -1) . substr($s, 0, -1);
}
您可以对此进行扩展,为要旋转的字符数添加可选参数。
答案 4 :(得分: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
答案 5 :(得分: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;
}
?>
答案 6 :(得分: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;