字符串前无内容的indexOf

时间:2019-01-28 09:50:49

标签: javascript

我有一个包含以下内容的字符串:

string = "GOAT,Speed,OCG GOAT";

然后我将得到以下内容:

if(data.format.indexOf("GOAT") >= 0){

}
if(data.format.indexOf("OCG GOAT") >= 0){

}

由于两个中都包含“ GOAT”,因此它们两个都自然返回TRUE。 是否可以在字符串前没有任何内容的情况下执行indexOf,所以我只能检查“ GOAT”而没有“ OCG GOAT”返回true?因为“ GOAT”将始终排在字符串的首位。

2 个答案:

答案 0 :(得分:3)

请检查indexOf是否等于0(表明您正在搜索的子字符串出现在干草堆的最开始):

data.format.indexOf('GOAT') === 0

或改用startsWith

data.format.startsWith('Goat')

答案 1 :(得分:1)

使用正则表达式也是一种解决方案:

const GOAT_REGEX = /^GOAT.*/g;

const SUCCESS = "GOAT,Speed,OCG GOAT";
const FAILURE = "Speed,OCG GOAT";

console.log('Should work (true is correct)', GOAT_REGEX.test(SUCCESS));
console.log('Should fail (false is correct)', GOAT_REGEX.test(FAILURE));