search

Home  >  Q&A  >  body text

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

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

伊谢尔伦伊谢尔伦2859 days ago798

reply all(3)I'll reply

  • 伊谢尔伦

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

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

    reply
    0
  • ringa_lee

    ringa_lee2017-04-10 16:00:36

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

    reply
    0
  • Cancelreply