JS 字符串方法 重写

JS 字符串方法 重写

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /*---返回所有索引----*/
        // 1.写一个函数,参数为1.一个字符,2.一个字符串,返回这个字符出现在这个字符串的第几个位置,如果没有该字符,则返回-1
        function isHere(n, str){
            let arr = [];   //定义一个数组存储位置的索引
            for(let i=0; i<str.length; i++){ //遍历字符串的每一个,匹配传入字符的第一个,假设索引为n,传入字符串长度为m
                if(str[i] === n[0]){
                    if(cut(i, i+n.length, str) === n){  //从n开始截取到m,比较截取出来的和传入的是否相等,相等就保存索引
                        arr.push(i);
                    }
                }
            }
            if(arr.length>0){  //若arr的长度为0,则这个字符串没有匹配项
                return arr;
            }else{
                return -1;
            }
        }
        // console.log(isHere('ss', 'adsasfsradssbn'));


        /*---截取字符串----*/
        //2.写一个函数,参数为1.截取字符串的起始位置,2.截取字符串的结束位置,要截取的字符串,最后根据函数参数返回对应截取的字符串
        function cut(start, end, str){
            let arr = [];
            for(let i=start; i<end; i++){
                arr.push(str[i]);
            }
            return arr.join('');
        }
        // console.log(cut(2, 4, 'abcdefg'));


        /*---分割字符串----*/
        //3.写一个函数,参数为1.一个字符,2.一个字符串,根据这个字符 将 传入的字符串 分割成多个字符串,并用数组返回这些分割的字符串
        function divisionMore(n, str){
            let arr = [];
            let isR = isHere(n, str);  //找到传入字符串在整个字符串的位置
            let first = 0;  //从第一个字符开始比较
            for(let i=0; i<isR.length; i++){
                if(cut(first, isR[i], str)){
                    arr.push(cut(first, isR[i], str));
                }
                first = isR[i]+n.length;
            }
            if(cut(first, str.length, str)){
                arr.push(cut(first, str.length, str))
            }
            console.log(arr);
        }
        divisionMore('ds', ' d sff  dscd  ds fss');



        // 4.写一个函数,参数为
        // 1.一个字符串,返回这个字符串的反向字符串。
        function reverse(str){
            let arr = [];
            for(let i=str.length-1; i>=0; i--){
                arr.push(str[i]);
            }
            console.log(arr.join(''));
        }
        // reverse('abcdefg');


    </script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值