Home > Q&A > body text
javascript对字符串进行循环移位操作,比如"abcde"左移两位变成"cdeab",请问如何实现?
伊谢尔伦2017-04-10 16:00:36
1
2
3
4
5
6
7
8
9
10
11
12
13
<code>function shiftLeft(str, n) {
<code>
function
shiftLeft(str, n) {
var len = str.length;
var
len = str.length;
// 因为是循环移动,所以需要处理移动位数大于字符串长度的情况
n = n % len;
return str.substring(n, len) + str.substring(0, n);
return
str.substring(n, len) + str.substring(0, n);
}
var s= shiftLeft('abcdefg', 2);
s= shiftLeft(
'abcdefg'
, 2);
console.log(s); // "cdefgab"
console.log(s);
// "cdefgab"
s = shiftLeft('abcdefg', 10);
s = shiftLeft(
, 10);
console.log(s); // "defgabc"</code>
// "defgabc"</code>
黄舟2017-04-10 16:00:36
之前写成右移了,改成左移,顺便借鉴了一下 @Terry_139061 的 n = n % len
n = n % len
<code class="javascript">function shiftCircle(s, n) {
<code
class
=
"javascript"
>
shiftCircle(s, n) {
n = n % s.length;
var right = s.substr(n);
right = s.
substr
(n);
return right + s.substr(0, n);
right + s.
(0, n);
(function() {
(
() {
var s = "abcdefg";
s =
"abcdefg"
;
console.log(shiftCircle(s, 2));
})();</code>
这个方法可以扩展到数组而不仅限字符串
var a = s.split("");
a = s.split(
""
);
var left = a.splice(0, n);
left = a.splice(0, n);
return a.concat(left).join("");
a.concat(left).join(
ringa_lee2017-04-10 16:00:36
我提供一个思路,循环左边两位,然后依次添加到后面的字符串尾。