字符串对象
在JavaScript中,字符串对象提供了一些用于对字符串进行处理的属性和方法
1.1字符串对象
字符串对象使用new String()来创建,在String构造函数中传入字符串,就会在返回的字符串对象中保存这个字符串
<script>
var str=new String('送你一朵小红花')
console.log(str);//String
console.log(str.length);//输出结果为:7
//看不到常见的属性
var str1='送你一朵小红花';
console.log(str1)//送你一朵小红花
var obj=new String('Hello')
console.log(typeof obj)//输出结果:object
console.log(obj instanceof String);//输出结果:true
</script>
由上可以看出,使用new String()返回的obj是一个对象,但是普通的字符串变量并不是一个对象,它只是一个字符串类型的数据
1.2 根据字符返回位置
字符串对象提供了用于检索元素的属性和方法
成员 | 作用 |
---|---|
indexOf(searchValue) | 获取searchValue在字符串中首次出现的位置 |
lastIndexOf(searchValue) | 获取searchValue在字符串中最后出现的位置 |
代码如下:了解indexOf方法和lastIndexOf方法的使用
<script>
//indexOf:参数1:要搜索的子字符串:参数2:可选
var str=new String('送你一朵小红花,送你一朵小红花')
//查找 花 首次出现的位置
var res=str.indexOf('花');
//查找 花 从第七个位置查找 花 第一次出现的位置
var res2=str.indexOf('花',7);
console.log(str);
console.log(str.length);//15
console.log(res);//6
console.log(res2);//14
//lastIndexOf:参数1:要搜索的子字符串;参数2:可选
var str1=new String('to be or not to be');
//查找 e 从最后一个字符开始,第一次出现的位置
var res1=str1.lastIndexOf('e');
//查找 e 从第8个位置开始倒数,第一次出现的位置
var res3=str1.lastIndexOf('e',8);
console.log(str1);
console.log(str1.length)//18
console.log(res1);//输出结果:17
console.log(res3);//输出结果:4
接下来我们通过案例进行演示。要求在一组字符串中,找到所有指定元素出现的位置以及次数,字符串为:'Hello World, Hello JavaScript'
<script>
//案例代码
var str='Hello World, Hello JavaScript';
var index=str.indexOf('o');
var num=0;
while(index!=-1){//index!=1表示可以找到o的时候
console.log(index);//输出o出现的位置,此处结果是为4,7,17
index=str.indexOf('o',index+1);
num++;
}
console.log('o的出现的次数是:'+num);//o出现的次数是:3
</script>
上述代码中,第2行代码表示需要先找到第一个。出现的位置。第3行代码设置。出现的次数初始值为0。第4行代码通过while语句判断indexOf返回值的结果,如果不是-1就继续往后进行查找,这是因为index0f只能查找到第I个,所以后面的查找需要利用第2个基本数参数来实现,给当前的索引index 加1,从而实现继续查找。需要注意的是,字符串中的空格也会被当作一个字符来处理。
1.3根据位置返回字符
在JavaScript中,字符串对象提供了用于获取字符串中的某一个字符的方法
成员 | 作用 |
---|---|
charAt(index) | 获取index位置的字符,位置从0开始计算 |
charCodeAt(index) | 获取index位置的字符的ASCII码 |
str[index] | 获取指定位置处的字符(HTML新增) |
下面用代码来演示
<script>
var str='andy';
//获取index位置的字符
console.log(str.charAt(0));//输出结果为:4
//获取index位置的字符的ASCII码
console.log(str.charCodeAt(0));//输出结果为:97(a的ASCII码值)
for(var i=0;i<str.length;i++){
//获取指定位置处的字符
console.log(str[i]);
}
</script>
1.4【案例】统计出现最多的字符和次数
通过一个案例来演示charAr()方法的使用,通过程序来统计字符串中出现最多的字符和次数
<script>
var str='Apple';
var obj={};
for(var i=0;i<str.length;i++){
//3.利用chars保存字符串中的每一个字符
var chars=str.charAt(i);
console.log(chars);
//4.利用对象的属性来方便查找元素
//obj[chars]获取对象的属性的属性值
if(obj[chars]!=true){//若果没有获取到当前字符串,值为undefined(转为布尔值为false)
obj[chars]=1;//给当前对象的属性对应的属性值赋值为1
}else{
obj[chars]++;//如果获取到了当前字符串,即对应的属性+1
}
}
console.log(obj);
//2.统计出现最多的字母
var max=0;//保存出现次数最大值
var maxStr='';//保存出现次数最多的字母
//2.1遍历对象的属性和方法
for(var key in obj){
//2.2将对象中属性的值和max进行比较
if(obj[key]>max){
max=obj[key];
maxStr=key;
}
}
console.log('出现最多的字符是:'+maxStr+',共出现了'+max+'次');
</script>
1.5 字符串操作
字符串对象提供了一些用于截取字符串,连接字符串,替换字符串的属性和方法,具体如下表
成员 | 作用 |
---|---|
concat(str1, str2, str3...) | 连接多个字符串 |
slice(start,[ end]) | 截取从start位置到end位置之间的一- 个子字符串 |
substring(star[ ,end]) | 截取从start位置到end位置之间的.个子字符串, 基本和slice相同,但是不接收负值 |
substr(start[, length]) | 截取从start位置开始到length长度的子字符串 |
toLowerCase() | 获取字符串的小写形式 |
toUpperCase() | 获取字符串的大写形式 |
split(separator[, limil) | 使用separator分隔符将字符串分隔成数组,limit 用于限制数量 |
replace(strl, str2) | 使用str2替换字符串中的strl,返回替换结果,只会替换第一个字符 |
通过代码示例进行演示
<script>
var str='HelloWorld';
str.concat('!');
str.slice(1,3);
str.substring(5);
str.substring(5,7);
str.substr(5);
str.toLowerCase();
str.toUpperCase();
str.split('1')
str.split('1',3);
str.replace('world','!');
</script>
1.6【案例】判断用户名是否合格
<script>
var name=prompt('请输入用户名');
if(name.length<3||name.length>10){
alert('用户名长度必须在3~10之间');
}else if(name.toLowerCase().indexOf('admin')!==-1){
alert('用户名中不能包含敏感词:admin');
}else {
alert('恭喜你,该用户名可以使用');
}
</script>