使用包含方法,我们为所有这些日志获取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
的其余日志?
答案 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/'));
您还可以使用RegExps和RegExp.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"