在javascript中,给出一个字符串" body"和另一个字符串"保镖",我如何返回true
,因为一个字符串是另一个字符串的一部分而不知道它们对代码的呈现顺序?即
let string1 = 'body', string2 = 'bodyguard'
或
let string1 = 'bodyguard', string2 = 'body'
?
并且不知道它是第一个还是最后一个部分,只要一个字符串完全是另一个字符串的一部分,而不知道哪个字符串是两者中的较长者。 THX
答案 0 :(得分:4)
请检查两种方式:
if (str1.includes(str2) || str2.includes(str1)) {
// It's one of them
}
或者总是检查较短的那个
let [longer, shorter] = str1.length > str2.length ? [str1, str2] : [str2, str1];
if (longer.includes(shorter) != -1) {
// It's one of them
}
(您使用了let
,因此我认为可以使用解构分配和String#includes
,因为所有都是ES2015 +。)
如果您不想使用String#includes
,str.indexOf(otherStr) != -1
可以有效地做同样的事情。
答案 1 :(得分:1)
您可以检查其中一个字符串是否包含另一个字符串(未经测试但应该有效):
if ((string1.indexOf(string2) !== -1) || (string2.indexOf(string1) !== -1)){
//do something
}
答案 2 :(得分:1)
let string1 = 'body', string2 = 'bodyguard';
let string3 = 'bodyguard', string4 = 'body';
var controlString=function(str1,str2){
return (str1.indexOf(str2)!==-1||str2.indexOf(str1)!==-1);
};
console.log(controlString(string1,string2));
console.log(controlString(string3,string4));
答案 3 :(得分:0)
您可以在Javascript中使用它:
var string1 = "body";
var string2 = "bodyguard";
if(string1.includes(string2) || string2.includes(string1)){
// DO WHAT YOU WANT
} else {
}
var string1 = "body";
var string2 = "bodyguard";
if(string1.includes(string2) || string2.includes(string1)){
document.getElementById("demo").innerHTML = "One string is part of another" ;
} else {
document.getElementById("demo").innerHTML = "No string is part of another" ;
}

<p id="demo"></p>
&#13;