搜索

首页  >  问答  >  正文

javascript如何实现字符串循环移位?

javascript对字符串进行循环移位操作,比如"abcde"左移两位变成"cdeab",请问如何实现?

伊谢尔伦伊谢尔伦2859 天前806

全部回复(3)我来回复

  • 伊谢尔伦

    伊谢尔伦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"

    回复
    0
  • 黄舟

    黄舟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));
    })();

    回复
    0
  • ringa_lee

    ringa_lee2017-04-10 16:00:36

    我提供一个思路,循环左边两位,然后依次添加到后面的字符串尾。

    回复
    0
  • 取消回复