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

2022-08-29 21:57:19

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

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

haystack.startsWith(needle) == true

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


答案 1

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

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

   console.log("Hello World!".startsWith("He")); // true
    
var haystack = "Hello world";
var prefix = 'orl';
console.log(haystack.startsWith(prefix)); // false

答案 2

.lastIndexOf的另一种选择:

haystack.lastIndexOf(needle) === 0

这将向后查看从索引字符串长度回零开始的情况。换句话说,它只检查是否以 开头。 提供了第二个可选参数“fromIndex”。如果给定,则向后搜索从此给定的索引位置开始,并遍历回索引零。但是,除了最后一个索引之外,我们不得指定任何其他 fromIndex,否则搜索可能会忽略某些内容。haystackneedlehaystackhaystackneedlelastIndexOf

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

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