我有一个包含以下内容的字符串:
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”将始终排在字符串的首位。
答案 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));