题意:
假设有两个字符串A和B,字符串A是长字符串,字符串B是短字符串。
如果在字符串A中能完全匹配到字符串B ,那么打印true,否则打印false。不区分大小写。
例如:
A=“zhangsan” B=“zhang”, 打印结果:true
A=“zhangsan” B=“szhang”, 打印结果:false
A=“zhangsan” B=“san”, 打印结果:true
JavaScript 方法1
- ( indexOf 查询字符串a中是否包含字符串b,如果查询不到返回值是-1,所以当查询结果不等于-1的时候返回true)
indexOf:
<script>
var a ="zhangsan";
var b="ZHANG";
if (a.toLocaleLowerCase().indexOf(b.toLocaleLowerCase()) != -1) {
alert("true");
} else {
alert("false");
}
</script>
这里也可以使用search和match方法:
search:
match:
那么, 为什么indexOf,search 和match都可以实现字符串查询,他们三者有什么区别呢?
- 首先,他们三个的参数不同, indexOf更为底层方法,参数只可以是字符串, 而search 和match的参数多用正则表达式。
- 返回结果不同:
indexOf 返回的是查询到的字符串在被检测字符串中第一次出现的位置, 没有找到返回-1。
search 返回的也是第一次查询到的结果所在的位置,没有则返回-1。
match 返回的是一个或多个正则表达式的匹配结果,多个在正则表达式后面加上/g,是一个数组,一个也没有找到返回的是null。
( 当只是要查询一个字符串是否出现的情况下常用indexOf, 效率高。当需要正则表达式匹配查询的时候可以选择search和match 。我们这个例子推荐indexOf )。
JavaScript 方法2
(利用字符串截取的方式 substring() ,从长字符串a中依次截取长度为b字符串长度的字符串, 如果截取的字符串和b字符串相同,则返回true,否则向后移一位,继续截取,继续比较。 toLowerCase() 方法是先将两个字符串都变成小写。)
<script>
var strA="sczhangdan";
var strB="aSCZ";
// 字符串B的长度
var strBlength=strB.length;
// A字符串里是否包含B 默认false
var hasStrB=false;
for(var i=0;i<=(strA.length-strB.length);i++){
if(strA.substring(i,strBlength).toLowerCase()==strB.toLowerCase()){
hasStrB=true;
break;
}else{
strBlength++;
}
}
// 打印判断结果
console.log(hasStrB);