一、String对象
string ---->字符串类型----基本类型
String---->字符串类型----引用类型
js中没有字符类型
注意!!!!!!js中无论是单引号的还是双引号的都是字符串
其他语言:
字符类型 单引号
字符串类型 双引号
var str="hello"; //可以看成是一个字符数组
for(var i=0;i<str.length;i++){
console.log(str[i]);
}
/*
* String---->是一个对象
* 字符串可以看成是字符组成的数组,但是js中没有字符类型
* 字符是一个一个的,在别的语言中字符用一对单引号括起来
* 在js中字符串可以使用单引号也可以使用双引号
* 因为字符串可以看成是数组,所以,可以通过for循环进行遍历
*
* 字符串特性:不可变性,字符串的值是不能改变
*
* 字符串的值之所以看起来是改变的,那是因为指向改变了,并不是真的值改变了
*/
var str="hello";
str[1]="W"; // 字符串可以通过索引访问字符串中的某个值
// 但是,是可以访问---读取---只读 值不能改变
// 设置:就是可以改变
//对象的方式来看待
var str="哈哈";
str="嘻嘻"; //重新赋值,改变的是地址指向
console.log(str); //嘻嘻
var str="hello";
str[1]="W";
console.log(str); //hello 没有被改变
for(var i=0;i<str.length;i++){
console.log(str[i]); //h e l l o
}
二、String对象的方法
/*
- 实例方法----> 必须要通过 new 的方式创建的对象(实例对象)来调用的方法
- 静态方法----> 直接通过 大写的构造函数的名字 调用的方法(直接通过大写的对象名字调用的) String
- 1、 字符串的常用!!!属性:
- .length------>字符串的长度
- 2、字符串的常用!!!方法:
- .charAt(索引),返回值是指定索引位置的字符串,超出索引,结果是空字符串
- .fromCharCode(数字值,可以是多个参数),返回的是ASCII码对应的值
- .concat(字符串1,字符串2,…);返回的是拼接之后的新的字符串
- .indexOf(要找的字符串,从某个位置开始的索引);返回的是这个字符串的索引值,没找到则返回-1
- .lastIndexOf(要找的字符串);从后向前找,但是索引仍然是从左向右的方式,找不到则返回-1
- .replace(“原来的字符串”,“新的字符串”);用来替换字符串的
- .slice(开始的索引,结束的索引); 从索引5的位置开始提取,到索引为10的前一个结束,没有10,并返回这个提取后的字符串
- .split(“要干掉的字符串”,切割后留下的个数);切割字符串
- .substr(开始的位置,个数);返回的是截取后的新的字符串
- .substring(开始的索引,结束的索引),返回截取后的字符串,不包含结束的索引的字符串
- .toLocaleLowerCase();转小写
- .toLowerCase();转小写
- toLocaleUpperCase()转大写
- .toUpperCase();转大写
- .trim();干掉字符串两端的空格
- */
//字符串的长度
var str="12345";
console.log(str.length);
//charAt(索引),返回值是指定索引位置的字符串,超出索引,结果是空字符串
var str="whatareyounoshalei";
var result=str.charAt(1000); //从0开始的
console.log(result); //空 (超出索引)
//fromCharCode(数字值,可以是多个参数),返回的是ASCII码对应的值=======》静态方法 不怎么用,一般后台用
var str1=String.fromCharCode(107,108,109);
console.log(str1); //klm
var str2=String.fromCharCode(83,79,83);
console.log(str2); //sos(求救信号)
//concat(字符串1,字符串2,...);返回的是拼接之后的新的字符串
var str="what";
console.log(str+"are"+"you"+"no"+"sha"+"lei"); //whatareyounoshalei 用 + 号
var str="小苏";
console.log(str.concat("喜欢","凤姐","这是","真的")); //小苏喜欢凤姐这是真的 用concat
//indexOf(要找的字符串,从某个位置开始的索引; 返回的是这个字符串的 索引值 ,没找到则返回-1
var str="小苏真的好猥好琐啊";
var index=str.indexOf("好",5); // 从5(第六个)开始找 如果没有5,就从0开始找
console.log(index); //6 第七个数
//lastIndexOf(要找的字符串);从后向前找,但是索引仍然是从左向右的方式,找不到则返回-1
var str="helo amen";
var index=str.lastIndexOf("e");
console.log(index); //7 后面的e
//replace("原来的字符串","新的字符串"); 用来替换字符串的
var str="小苏好帅哦,真的好勇敢哦";
if(str.indexOf("帅")!=-1){ //判断“帅”存在
str=str.replace("帅","猥琐");
}
else{
console.log("不存在");
}
console.log(str); //小苏好猥琐哦,真的好勇敢哦
//slice(开始的索引,结束的索引); 从索引5的位置开始提取,到索引为10的前一个结束,没有10,并返回这个提取后的字符串
var str = "如果有一天我邪恶了,请记住,我曾纯洁过";
//从索引5的位置开始提取,到索引为10的前一个结束,没有10,并返回这个提取后的字符串
str = str.slice(5, 10);
console.log(str); //我邪恶了,
//split("要去掉的字符串",切割后留下的个数); 切割字符串
var str="乔峰|慕容|凤姐|梅超风|小苏|大蛇丸";
var arr=str.split("|"); //成为数组,切割字符串
for(var i=0;i<arr.length;i++){
console.log(arr[i]); // 乔峰 慕容 凤姐 梅超风 小苏 大蛇丸
}
//substr(开始的位置,个数);返回的是截取后的新的字符串
var str="哈哈,小苏真的是好帅哦";
str=str.substr(5,5);
console.log(str); //真的是好帅 第六个数开始,五个数
//substring(开始的索引,结束的索引),返回截取后的字符串,不包含结束的索引的字符串
var str="哈哈,小苏真的是好帅哦";
str=str.substring(5,9);
console.log(str); //真的是好 (不包括最后一个索引)
//toLocaleLowerCase();转小写 toLowerCase();转小写
var str="HELLO";
//str=str.toLocaleLowerCase();
str=str.toLowerCase();
console.log(str); //hello
//toLocaleUpperCase()转大写 toUpperCase();转大写
var str="hello";
str=str.toLocaleUpperCase();
//str=str.toUpperCase();
console.log(str); //HELLO
//trim();去掉字符串两端的空格 中间的空格去不了
var str=" 哦,这 是一个神奇的一天 ";
str=str.trim();
console.log("===="+str+"===="); //====哦,这 是一个神奇的一天====
三、String案例
案例1:
// var key=prompt("请输入您要截取的内容");
//先获取要截取的字符串的索引的位置
var index=str.indexOf(key);
console.log(index); //5
//从指定的索引位置开始截取,只需要两个
str=str.substr(index,2);
console.log(str); //向上
案例2:找到这个字符串中所有o出现的位置
var str3="whot aro you doing?";
var index=0; //开始找的位置
var key="o"; //要找的字符串
while((index=str3.indexOf(key,index))!=-1){ //如果等于-1,说明找完了 不知道循环次数用while()
console.log(index); //2 7 10 14
index+=key.length;
}
案例3:找到这个这个字符串中每个字符串出现的次数
var str4="qbhbdsuwbdHFJHFFDJFJwcbjdscpsacisckwfeyh";
//第一步:把所有字母都变成小写
str4=str4.toLocaleLowerCase();
console.log(str4);
//第二步:创建一个新的空对象 目的:把字母作为键,次数作为值
var obj={}
//第三步:遍历字符串,获取每个字母
for (var i=0;i<str4.length;i++){
var key=str4[i]; //得到每个字母
// console.log(key);
if(obj[key]){ //判断obj中有没有这个键
//对象中有这个字母了
obj[key]++;
}
else{
//对象中没有这个字母,那就把字母加到这个对象中,并且给这个字母一个出现的次数,默认一次
obj[key]=1;
}
}
//第四步:遍历对象,显示每个字母的出现次数
for (var key in obj) {
console.log(key +"这个字母出现了"+obj[key]);
}