javascript - 怎样用数组模拟字符串的split方法
ringa_lee
ringa_lee 2017-04-10 15:13:57
[JavaScript讨论组]

我在看一道构造函数的题目,该题目是这样子的:

在String()构造器不存在的情况下自定义一个MyString()的构造函数,记住由于String()不存在,因此编写构造器时不能使用String内建的方法与属性,并且要让您所创建的对象通过以下测试:

var s = new Mystring('hello');
……………………
s.split('e');
["h","llo"]

s.split('l');
["he","","o"]

提示说可以用数组模拟字符串实现,题目中的其他方法和属性我已经实现了,唯独split()不知道怎么实现,想在这里问问有什么实现办法,谢谢。

ringa_lee
ringa_lee

ringa_lee

全部回复(2)
迷茫

把字符串转换为字符数组,然后找到分割字符的下标index,0-index-1 构成一个字符串,index+1-length-1构成另外一个字符串。

PHPz
function MyString(str){
    var arr = str.split('');

    arr.toString = function(){
        return arr.join('');
    }

    arr.valueOf = function(){
        return arr.toString();
    }

    arr.charAt = function(index){
        return arr[parseInt(index)];
    }

    arr.concat = function(conStr){
        return str+conStr;
    }

    arr.slice = function(start, end){
        if (end < 0){
            end = arr.length-1;
        }
        var substring = '';
        for(var i=0; i<arr.length; i++){
            if(i>=start && i<end){
                substring += arr[i];
            }
        }
        return substring;
    }

    arr.split = function(splitStr){
        var splitArr = [];

        var i, j,start;
        for(i=0, start=i; i<arr.length; i++){

            for(j=0; j<splitStr.length && (i+j)<arr.length; j++){
                if(arr[i+j] != splitStr[j])
                    break;
            }

            if (j == splitStr.length){
                var substring = arr.slice(start, i);
                splitArr.push(substring);
                start = (i+j);
            }
        }

        if(start < i){
            var substring = arr.slice(start, i);
            splitArr.push(substring);
        }

        return splitArr;
    }

    arr.reverse = function(){
        for(var i=0, j=arr.length-1; i<j; i++,j--){
            var tp = arr[i];
            arr[i] = arr[j];
            arr[j] = tp;
        }
        return arr;
    }

    return arr;
}

var string = new MyString('hello');

console.log(string.length);
console.log(string[0]);

console.log(string.charAt(1));
console.log(string.charAt('2'));
console.log(string.charAt('e'));

var conStr = string.concat(' world');
console.log(conStr);

var sliceStr = string.slice(1, 3);
console.log(sliceStr);
sliceStr = string.slice(0, -1);
console.log(sliceStr);

console.log(string.split('e'));
console.log(string.split('l'));

//string.reverse();
console.log(string.reverse().toString());
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号