首页 > 解决方案 > 检查字符串是否以数组中的任何字符串开头

问题描述

在javascript中,如何检查字符串是否以数组中的任何字符串开头。

例如,

我有一个字符串数组,

const substrs = ['the', 'an', 'I'];

我有一个字符串

const str = 'the car';

如何检查 str 是否以 substrs 中的任何字符串开头?

标签: javascriptecmascript-6

解决方案


你可以使用 和 的组合,Array.prototype.some它们String.prototype.startsWith都是 ES6 的特性:

const substrs = ['the', 'an', 'I'];
function checkIfStringStartsWith(str, substrs) {
  return substrs.some(substr => str.startsWith(substr));
}

console.log(checkIfStringStartsWith('the car', substrs)); // true
console.log(checkIfStringStartsWith('a car', substrs)); // false
console.log(checkIfStringStartsWith('i am a car', substrs));  // false
console.log(checkIfStringStartsWith('I am a car', substrs));  // true

如果您希望以不区分大小写的方式进行比较,那么您还需要将字符串转换为小写:

const substrs = ['the', 'an', 'I'];
function checkIfStringStartsWith(str, substrs) {
  return substrs.some(substr => str.toLowerCase().startsWith(substr.toLowerCase()));
}

console.log(checkIfStringStartsWith('the car', substrs)); // true
console.log(checkIfStringStartsWith('a car', substrs)); // false
console.log(checkIfStringStartsWith('i am a car', substrs));  // true (case-insensitive)
console.log(checkIfStringStartsWith('I am a car', substrs));  // true


推荐阅读