如果只有确切的包含,则返回true

时间:2020-05-06 19:33:49

标签: javascript

使用包含方法,我们为所有这些日志获取true

console.log("https://example.com/test/media/instructions/listen_again_long/1.mp3".includes('listen_again_long')); // true
console.log("https://example.com/test/media/instructions/listen_again_long/2.mp3".includes('listen_again')); // true
console.log("https://example.com/test/media/instructions/listen_again_long/3.mp3".includes('listen')); // true

但是我们知道只有第一个日志应该返回true,因为在较长的字符串中恰好有listen_again_long

如果我们认为此部分固定:https://example.com/test/media/instructions/

我们如何只返回true的第一个日志和false的其余日志?

2 个答案:

答案 0 :(得分:1)

您实际上正在寻找用/括起来的某个字符串,因此一种选择是简单地在传递给String.prototype.includes()的参数中同时包含两个/

console.log("https://example.com/test/media/instructions/listen_again_long/1.mp3".includes('/listen_again_long/'));
console.log("https://example.com/test/media/instructions/listen_again_long/2.mp3".includes('/listen_again/'));
console.log("https://example.com/test/media/instructions/listen_again_long/3.mp3".includes('/listen/'));

您还可以使用RegExpsRegExp.prototype.test()做同样的事情:

console.log(/\/listen_again_long\//.test("https://example.com/test/media/instructions/listen_again_long/1.mp3"));
console.log(/\/listen_again\//.test("https://example.com/test/media/instructions/listen_again_long/2.mp3"));
console.log(/\/listen\//.test("https://example.com/test/media/instructions/listen_again_long/3.mp3"));

在两种情况下,如果您要确保匹配不在其他地方发生,您可以将/listen_again_long/替换为整个内容:

"...".includes("https://example.com/test/media/instructions/listen_again_long/");

或者,使用RegExp:

/https:\/\/example.com\/test\/media\/instructions\/listen_again_long\//.test("...");

答案 1 :(得分:1)

您必须提取要与参数进行比较的子字符串,然后进行直接的===比较。

var url = <your passed in mp3 file>;
var s = "https://example.com/test/media/instructions/"
var substring = url.substring(url.indexOf(s) + url.length);
substring = substring.substring(0, url.indexOf("/");

substring === "listen_again_long"
相关问题