我正在尝试从在这种情况下包含这些字母的第一个元素到在这种情况下包含这些字母的最后一个元素中获取字符串数组的一部分。
首先,输入是一个句子,因此我将其按空格分隔。然后,我试图从indexOf('IN')直到lastIndexOf('NN')获取一个切片,但是正在获取一个空数组。
这是我尝试过的:
var str = "weather(NN) in(IN) boston(NN)"
str.split(' ').slice(str.split(' ').indexOf('IN'), str.split(' ').lastIndexOf('NN')+1);
我如何获得它,["in(IN)", "boston(NN)"]
或者如果字符串是“ weather(NN)in(IN)波士顿(NN)massachusetts(NN)”,我得到了["in(IN)", "boston(NN)", "massachusetts(NN)"]
吗?
该indexOf
和lastIndexOf
方法不看在数组项子,他们只认准完整项目的比赛。
您可以使用reduce
和reduceRight
方法来查找数组:
var str = "weather(NN) in(IN) boston(NN)";
var arr = str.split(' ');
var first = arr.reduce(function(p, c, i){
return p != -1 ? p : c.indexOf('IN') != -1 ? i : -1;
}, -1);
var last = arr.reduceRight(function(p, c, i, a){
return p != -1 ? p : c.indexOf('NN') != -1 ? i : -1;
}, -1);
arr = arr.slice(first, last + 1);
演示:http : //jsfiddle.net/8WS3g/
注意:Array.reduce
和Array.reduceRight
方法仅在IE9和更高版本中受支持。(问题中使用的Array.index
andArray.indexOf
方法也是如此,因此不会改变要求。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句