字符串左移

来源:互联网 发布:任加踢法 知乎 编辑:程序博客网 时间:2024/06/05 19:18

汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。
通过PHP字符串截取扩展相关函数

public function leftMoveString($string, $num) {    return substr($string, $num) . substr($string, 0, $number);}
public function leftMoveString($string, $num) {    $string .= $string;    $length = strlen($string);    return substr($string, $num, $length);  }

substr 返回字符串的子串

string substr(string $string, int $start[, int $length])//返回字符串string由$start$length参数指定的子字符串参数 $start **1 $start 为非负数,返回的字符串将从$string$start位置开始,从0开始计算,例如,在字符串"abcdef"中,在位置0的字符串是"a",位置2的字符串是"c"**2 $start 为负数,返回的字符串将从$string结尾处向前数第$start个字符开始。3 如果$string的长度小于$start, 将返回false   <?php$rest = substr("abcdef", -1);    // 返回 "f"$rest = substr("abcdef", -2);    // 返回 "ef"$rest = substr("abcdef", -3, 1); // 返回 "d"$rest = substr("abcdef", 0); // 返回 false?>length 1 length为正数,返回的字符串将从$start处开始最多包括$length个字符(取决于$string的长度)2 length为负数,$string末尾处的$length个字符将会被省略,即截取末尾处$length之前的字符串(若$start是负数则从字符串尾部算起)。如果$start不在这段文本中,那么将返回false。3 length0,false,null 返回一个空字符串4 没有提供$length,返回的子字符串将从$start位置开始直到字符串结尾 <?php$rest = substr("abcdef", 0, -1);  // 返回 "abcde"$rest = substr("abcdef", 2, -1);  // 返回 "cde"$rest = substr("abcdef", 4, -4);  // 返回 ""$rest = substr("abcdef", -3, -1); // 返回 "de"?>

引申 切割字符串 explode, str_split
str_split — 将字符串转换为数组
说明

array str_split(string $string [, int $split_length = 1])

参数 split_length 每一段的长度

返回值 如果指定了可选的 split_length 参数,返回数组中的每个元素均为一个长度为 split_length 的字符块,否则每个字符块为单个字符。
如果 split_length 小于 1,返回 FALSE。如果 split_length 参数超过了 string 超过了字符串 string 的长度,整个字符串将作为数组仅有的一个元素返回。

<?php$str = "Hello Friend";$arr1 = str_split($str);$arr2 = str_split($str, 3);print_r($arr1);print_r($arr2);//arr1Array(    [0] => H    [1] => e    [2] => l    [3] => l    [4] => o    [5] =>    [6] => F    [7] => r    [8] => i    [9] => e    [10] => n    [11] => d)//arr2Array(    [0] => Hel    [1] => lo    [2] => Fri    [3] => end)?>

explode — 使用一个字符串分割另一个字符串
说明

array explode ( string $delimiter , string $string [, int $limit ] )

此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。
参数 delimiter 边界上的分隔字符
limit
1 limit 为正数,则返回的数组包含最多limit个元素,而最后那个元素将包含string的剩余部分。
2 limit为负数,则返回除了最后的-limit个元素外的所有元素。
3 limit为0,则会被当作1

返回值
此函数返回由字符串组成的 array,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。

如果 delimiter 为空字符串(”“),explode() 将返回 FALSE。 如果 delimiter 所包含的值在 string 中找不到,并且使用了负数的 limit , 那么会返回空的 array, 否则返回包含 string 单个元素的数组。

<?php// 示例 1$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";$pieces = explode(" ", $pizza);echo $pieces[0]; // piece1echo $pieces[1]; // piece2// 示例 2$data = "foo:*:1023:1000::/home/foo:/bin/sh";list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);echo $user; // fooecho $pass; // *?><?php/* A string that doesn't contain the delimiter will simply return a one-length array of the original string. */$input1 = "hello";$input2 = "hello,there";var_dump( explode( ',', $input1 ) );var_dump( explode( ',', $input2 ) );// 以上例程会输出:array(1)(    [0] => string(5) "hello")array(2)(    [0] => string(5) "hello"    [1] => string(5) "there")?><?php$str = 'one|two|three|four';// 正数的 limitprint_r(explode('|', $str, 2));// 负数的 limit(自 PHP 5.1 起)print_r(explode('|', $str, -1));?>以上例程会输出:Array(    [0] => one    [1] => two|three|four)Array(    [0] => one    [1] => two    [2] => three)

implode — 将一个一维数组的值转化为字符串
说明

string implode ( string $glue , array $pieces )string implode ( array $pieces )

用 glue 将一维数组的值连接为一个字符串。

参数 glue 默认为空的字符串。
pieces 你想要转换的数组。

返回值 返回一个字符串,其内容为由 glue 分割开的数组的值。

<?php$array = array('lastname', 'email', 'phone');$comma_separated = implode(",", $array);echo $comma_separated; // lastname,email,phone// Empty string when using an empty array:var_dump(implode('hello', array())); // string(0) ""?>

chunk_split — 将字符串分割成小块
说明

string chunk_split ( string $body [, int $chunklen = 76 [, string $end = "\r\n" ]] )

使用此函数将字符串分割成小块非常有用。例如将 base64_encode() 的输出转换成符合 RFC 2045 语义的字符串。它会在每 chunklen 个字符后边插入 end。

参数
body 要分割的字符。
chunklen 分割的尺寸。
end 行尾序列符号。

返回值
返回分割后的字符。

<?php$str = "Shanghai";echo chunk_split($str,1,".");  // S.h.a.n.g.h.a.i.?>
原创粉丝点击