一尘不染

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

javascript

如何String.StartsWith在JavaScript中编写等效于C#的代码?

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

haystack.startsWith(needle) == true

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


阅读 274

收藏
2020-04-25

共2个答案

一尘不染

你可以使用ECMAScript 6的String.prototype.startsWith()方法,但并非所有浏览器都支持该方法。你可能需要使用填充程序/填充来将其添加到不支持它的浏览器中。创建一个符合规范中所有细节的实现有点复杂。如果你想要忠实的垫片,请使用以下任一方法:

  • Matthias BynensString.prototype.startsWith垫片,或者
  • es6-shim,垫片它尽可能多的ES6规范越好,包括String.prototype.startsWith
    对方法进行填充后(或者如果你仅支持已具有该方法的浏览器和JavaScript引擎),则可以按以下方式使用它:
"Hello World!".startsWith("He"); // true

var haystack = "Hello world";
var prefix = 'orl';
haystack.startsWith(prefix); // false
2020-04-25
一尘不染

另一种选择是.lastIndexOf

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

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

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

  • 它不会搜索整个haystack
  • 它不会创建新的临时字符串,然后立即将其丢弃。
2020-04-25