如何测试一个字符串是否是另一个字符串的最后一部分?

5
var longString = "this string is long but why"
var shortString = "but why"

如何测试 shortString 是否不仅包含在 longString 中,而且实际上是字符串的最后一部分。

我使用 indexOf == 0 来测试字符串的开头,但是不确定如何获取其结尾。


我猜是 JavaScript? - ptierno
2
你使用的是哪种编程语言?到目前为止,你尝试了什么?此外,这个问题可以用简单的“子字符串”解决——为什么要使用性能方面明显劣于它的正则表达式呢? - Nir Alfasi
抱歉,是的,它是JavaScript。 - ernerock
3个回答

5

如果是 JavaScript,您不需要使用正则表达式,只需执行以下操作:

longString.endsWith(shortString)

endsWith() 似乎是通过外部库添加的。 - ptierno
忽略该注释。这已被添加到ECMAScript 6规范中。然而,并非所有的JavaScript实现都支持它。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith - ptierno
目前,您可以使用类似于ES6-tools中提到的 polyfill 库。 - MasterAM

2

如果您需要正则表达式,可以使用以下方法:

var matcher = new RegExp(shortString + "\$", "g");
var found = matcher.test(longString );

$符号需要进行转义。同时,在单行代码中不需要进行全局检查。 - ptierno

1
你可以使用matchshortString中构建一个regex并进行测试:
var longString = "this string is long but why";
var shortString = "but why";
// build regex and escape the `$` (end of line) metacharacter
var regex = new RegExp(shortString + "\$");
var answer = regex.test(longString);
// true
console.log(answer);

希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接