伊谢尔伦2017-04-10 16:00:36
function shiftLeft(str, n) {
var len = str.length;
// 因为是循环移动,所以需要处理移动位数大于字符串长度的情况
n = n % len;
return str.substring(n, len) + str.substring(0, n);
}
var s= shiftLeft('abcdefg', 2);
console.log(s); // "cdefgab"
s = shiftLeft('abcdefg', 10);
console.log(s); // "defgabc"
黄舟2017-04-10 16:00:36
之前写成右移了,改成左移,顺便借鉴了一下 @Terry_139061 的
n = n % len
function shiftCircle(s, n) {
n = n % s.length;
var right = s.substr(n);
return right + s.substr(0, n);
}
(function() {
var s = "abcdefg";
console.log(shiftCircle(s, 2));
})();
这个方法可以扩展到数组而不仅限字符串
function shiftCircle(s, n) {
n = n % s.length;
var a = s.split("");
var left = a.splice(0, n);
return a.concat(left).join("");
}
(function() {
var s = "abcdefg";
console.log(shiftCircle(s, 2));
})();