前端常用之字符串操作

1:判断回文字符串

有感于这个小例子,所以对array和string的某些易混淆的方法进行了简单的对比,在另外一篇文章中

function palindrome(str){
        //\W匹配任何非单词字符,等价于 "[^A-Za-z0-9_]" \w查找单词字符
        var re = /[\W_]/g;
        var lowRegStr = str.toLowerCase().replace(re,"");

        if(lowRegStr.length === 0){
            return true;
        }

        if(lowRegStr[0] !== lowRegStr[lowRegStr.length-1]){
             return false;
        }
        //slice用法 返回子数组,并不会改变原数组 slice(start,end)
        console.log(lowRegStr.slice(0,lowRegStr.length) +"/////1")
        console.log(lowRegStr.slice(1,lowRegStr.length-1) +"/////12")
        //递归
        return palindrome(lowRegStr.slice(1,lowRegStr.length-1));
    }
    var arr = "abcder4554redcba";
    console.log(palindrome(arr));
    abcder4554redcba/////1
    bcder4554redcb/////12
    bcder4554redcb/////1
    cder4554redc/////12
    cder4554redc/////1
    der4554red/////12
    der4554red/////1
    er4554re/////12
    er4554re/////1
    r4554r/////12
    r4554r/////1
    4554/////12
    4554/////1
    55/////12
    55/////1
    /////12
    true

2:翻转字符串

刚看到这个的时候脑海中第一反应就是用str.split("").reverse().join(""),但是要排除这个方法,另外想,不用reverse()

思路一:模拟reverse()方法

    function reserveString(str){
        var temp = '';
        for(var i = str.length-1;i>=0;i--){
            temp += str[i];
        }
        return temp;
    }
    var ostr = "helloString";
    reserveString(ostr);//"gnirtSolleh"


思路2:转化成数组再join

 function reserveStrArr(str){
        var oArr = str.split("");
        var i = 0,j = oArr.length-1; var times = 0;
        while(i<j){
            tmp = oArr[i];
            oArr[i] = oArr[j];
            oArr[j] = tmp;
            i++;
            j--;
            times++;
        }
        console.log(times);
        return oArr.join("")
    }
    var ostr = "helloString";
    reserveStrArr(ostr);//"gnirtSolleh"   5

    function reserveStrArr(str) {
        var oArr = str.split("");
        var result = [];
        var times = 0;
        for(var i=oArr.length;i>=0;i--){
            result.push(oArr.pop());
            times++;
        }
        console.log(times);
        return result.join("");
    }

    var ostr = "helloString";
    reserveStrArr(ostr);//"gnirtSolleh"   12



猜你喜欢

转载自blog.csdn.net/qq_25236657/article/details/73650451