在JavaScript中,我如何检查一个字符串是否以数组中的任何字符串开头?
例如,我有一个字符串数组:
例如,我有一个字符串数组:
const substrs = ['the', 'an', 'I'];
我有一个字符串
const str = 'the car';
如何检查一个字符串是否以 substrs 中的任何一个字符串开头?
const substrs = ['the', 'an', 'I'];
我有一个字符串
const str = 'the car';
如何检查一个字符串是否以 substrs 中的任何一个字符串开头?
Array.prototype.some
和 String.prototype.startsWith
方法,以实现功能。
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
const check = (arr, str) => {
const firstWord = str.substr(0, str.indexOf(" "));
return arr.includes(firstWord);
}
const substrs = ['thee', 'an', 'I', 'The', 'the'];
const str = 'the car';
console.log(check(substrs, str)); //true
其中一种方法是构建一个正则表达式交替匹配 substrs
数组中的关键词。然后,使用 test()
函数对输入进行匹配检查:
const substrs = ['the', 'an', 'I'];
const str = 'the car';
regexp = new RegExp('^(?:' + substrs.join('|') + ')\\b');
console.log(regexp);
if (regexp.test(str)) {
console.log("MATCH");
}
在这里,我还打印出了正在使用的正则表达式,以便清楚明了。
const substrs = ['the', 'an', 'I'];
const str = 'the car';
let result = substrs.filter(s => str.startsWith(s));
console.log(result);
str.startsWith(s)
这里的 str 是什么,s 是什么? - Vivek Bani
['the', 'an', 'I'].toLocaleString()
可以获取the,an,I
,你有两个字符串可以操作。 - Alireza Ahmadi