返回lastIndexOf字符串中的确切单词

问题描述 投票:0回答:2

我想在字符串中找到一个确切单词的最后一个索引,但是我无法使代码正常工作:

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的索引。

javascript
2个回答
2
投票

比赛结束后任何地方'\\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));

1
投票

使用lastIndexOf,您可以这样做:

var foo='foo';
var speechResult='I went to foo the foob...';
var index=speechResult.lastIndexOf(foo);
console.log(index);

0
投票

使用lastIndexOf,您可以这样做:

var foo='foo';
var speechResult='I went to foo the foob...';
var index=speechResult.lastIndexOf(foo);
console.log(index);

0
投票

您也可以使用数组。

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)
© www.soinside.com 2019 - 2024. All rights reserved.