协慌网

登录 贡献 社区

如何检查字符串 “StartsWith” 是否是另一个字符串?

我如何在 JavaScript 中编写 C#的String.StartsWith等价物?

var haystack = 'hello world';
var needle = 'he';

haystack.startsWith(needle) == true

注意:这是一个老问题,正如评论中指出的 ECMAScript 2015(ES6)引入了.startsWith方法。但是,在撰写此更新时(2015 年), 浏览器支持还远未完成

答案

您可以使用 ECMAScript 6 的String.prototype.startsWith()方法,但并不是所有浏览器都支持它。您将需要使用填充 / 填充将其添加到不支持它的浏览器上。创建符合规范中列出的所有细节的实现有点复杂,并且本答案中定义的版本不会这样做; 如果你想要忠实的垫片,请使用:

一旦你对方法进行了调整(或者如果你只支持已经拥有它的浏览器和 JavaScript 引擎),你就可以像这样使用它:

"Hello World!".startsWith("He"); // true

var haystack = "Hello world";
var prefix = 'orl';
haystack.startsWith(prefix); // false

.lastIndexOf另一种选择:

haystack.lastIndexOf(needle, 0) === 0

这看起来向后通过haystack对于发生needle从指数开始0haystack 。换句话说,它只检查haystack是否以needle开始。

原则上,这应该比其他一些方法具有性能优势:

  • 它不搜索整个haystack
  • 它不会创建新的临时字符串,然后立即丢弃它。
data.substring(0, input.length) === input