查找除用连字符分隔的字符串以外的字符串大小的方法?

时间:2018-07-22 08:23:09

标签: javascript string data-structures

在size()函数中,我使用了split然后找到了数组的大小。除了拆分以外,是否还有其他方法或逻辑来查找由连字符(---)分隔的字符串的大小。

var Stack = function(){
    this.callStack='';
}

Stack.prototype.push = function(val){
    if(this.callStack==''){
        this.callStack = this.callStack.concat(val);
    }else {
        this.callStack =  this.callStack.concat('---', val);
    }
}

Stack.prototype.pop = function(){
    this.removeThis = this.callStack.lastIndexOf(('---'));
    this.str = this.callStack.slice(this.removeThis+3);
    this.callStack =  this.callStack.substring(0, this.callStack.lastIndexOf('---'));
    return this.callStack;
}

Stack.prototype.size = function(){  
    var sizes = this.callStack.split('---');
    return sizes.length;
}

//This will tell the latest element inserted in the stack:
Stack.prototype.peek= function(){
    var peekabu = this.callStack.slice(this.callStack.lastIndexOf('---')+3);
    return peekabu;
}

var stackInst = new Stack();

stackInst.push('Ankit');
stackInst.push('Ashu');
stackInst.push('Ash');
stackInst.push('Pikachu');

console.log('Size of the Stack is:', stackInst.size());

1 个答案:

答案 0 :(得分:0)

  

......不使用split或字符串以外的任何内容

这是一个奇怪的限制。

您可以使用replace替换所有非连字符,并取结果的长度:

return this.callStack.replace(/[^-]/g, '').length;

如果您是指---出现的次数,而不只是连字符的数目,请除以3 (自然地,假设那里没有其他连字符)

return this.callStack.replace(/[^-]/g, '').length / 3;

但是要确定只计算---,您可以将回调传递给replace

let size = 0;
this.callStack.replace(/---/g, function(m) {
    ++size;
});
return size;

但同样,这是一个奇怪的限制,结果这些都是奇怪的解决方案。