我想在字符串中找到一个确切单词的最后一个索引,但是我无法使代码正常工作:
var a = 'foo';
let speechResult = 'I went to foo the foobar and ordered foo foot football.'
var regex = new RegExp('\\b' + a + '\\b');
console.log(speechResult.search(regex));
我已经尝试过:
speechResult.lastIndexOf(regex)
但是没用。
注意:字符串中有两个foo
,我的代码始终返回第一个。仅使用lastIndexOf(a)
会返回足球的索引,而不是最后一个独立foo的索引。
比赛结束后任何地方'\\b' + a + '\\b'
的负前瞻:
var a = 'foo';
let speechResult = 'I went to foo the foobar and ordered foo foot footbal.'
var regex = new RegExp('\\b' + a + '\\b(?!.*\\b' + a + '\\b)');
console.log(speechResult.search(regex));
也许更容易理解,使用String.raw
(允许您不两次转义反斜杠,并使用${}
而不是' + b + '
进行插值):
var a = 'foo';
let speechResult = 'I went to foo the foobar and ordered foo foot footbal.'
var regex = new RegExp(String.raw`\b${a}\b(?!.*\b${a}\b)`);
console.log(speechResult.search(regex));
使用lastIndexOf,您可以这样做:
var foo='foo';
var speechResult='I went to foo the foob...';
var index=speechResult.lastIndexOf(foo);
console.log(index);
使用lastIndexOf,您可以这样做:
var foo='foo';
var speechResult='I went to foo the foob...';
var index=speechResult.lastIndexOf(foo);
console.log(index);
您也可以使用数组。
let a = 'foo';
let speechResult = 'I went to foo the foobar and ordered foo foot football.'
let tmp = speechResult.split(' ')
console.log(tmp.slice(0, tmp.lastIndexOf(a)).join(' ').length + 1)