string的方法不会修改字符串本身,会返回一个新字符串。
length
不需要括号;返回string长度
<script>
var str = 'hello';
console.log(str.length);
</script>
indexOf()
括号内是字符串值;返回值是该字符串在字符中首次出现的索引位置(若不存在,返回-1)
lastIndexOf()(注意大小写!)
括号内是字符串值;返回值是返回该字符串值最后出现的索引位置
<script>
var str = 'hello,world';
console.log(str.indexOf('l'));//结果是索引2
console.log(str.lastIndexOf('l'));//结果是索引9
</script>
includes()
括号内是字符串值;返回值true/false,如果存在,返回true,如果不存在,返回false(也可以用在数组上)
charAt()
括号内是索引;返回值是索引对应的字符串值(可以用来遍历字符串)
<script>
var str = 'abcoefoxyozzopp';
for(var i = str.length;i>=0;i--){
document.write(str.charAt(i));
}
</script>
concat()
括号内是需要拼接到后面的内容;返回值是拼接后的字符串(也可以使用+,效果是一样的)
replace(a,b)
将字符串中第一个出现的a,替换成b,如果需要将字符串中全部替换,可以使用while判断:
<script>
var str = 'abcoefoxyozzopp';
while(str.includes('o')){
str = str.replace('o','*')
}
document.write(str);
</script>
split()
括号内是分隔符;返回值是将字符串按照分隔符分割成数组(回忆一下数组的join方法,将数组转成字符串)
match()
括号内是字符串值(可以是单个,也可以用是相邻的多个);返回值是数组,里面包含匹配项和匹配项的索引和长度(长度指的是match了一个)
toLowerCase()
返回小写的字符串。
toUpperCase()
返回大写的字符串。
<script>
let str = 'ASDFGFWAEVTFFGFHHFIU';
let nstr = str.toLowerCase(); //返回小写的字符串
let str1 = 'asdhhgggg'
let mstr = str1.toUpperCase(); //返回大写的字符串
document.write(nstr+'<br>');
document.write(mstr);
</script>
substring()——负数&NaN=0,顺序可以颠倒
substring(a,b) 截取索引a至b的内容,包括a不包括b
substring(a) 截取索引a至最后的内容,包括最后一位
<script>
//提取‘少壮不努力’
var str = '少壮不努力老大徒伤悲';
let str1 = str.substring(0,5);
let str2 = str.substring(5,0);
let str3 = str.substring(-3,5);//-3被看成是0
let str4 = str.substring(NaN,5);//NaN被看成是0
console.log(str1);
console.log(str2);
console.log(str3);
console.log(str4);
</script>
substr()——被废弃了,少用
substr(a,b) 从索引a开始截取b个内容。支持负数
slice()——支持负数,顺序不可以颠倒
slice(a,b) 截取索引a和索引b之间的内容,包括a不包括b,a的索引必须要在b前面
slice(a) 截取索引a至最后的内容,包括最后一位
<script>
var str = '少壮不努力老大徒伤悲';
let str1 = str.slice(0,5);
let str2 = str.slice(5,0);//不能这样写,没结果
let str3 = str.slice(0,-5);
let str4 = str.slice(5,-7);//不能这样写,没结果
let str5 = str.slice(-10,-5);//-10对应的索引是str.length-10
console.log(str1);
console.log(str2);
console.log(str3);
console.log(str4);
console.log(str5);
</script>
简单类型和复杂类型
- 对象类型有哪些? string、Number、Boolean、Symbol、undefined、null(返回值是空的对象)、Object(Array function)
- 哪些对象可以new一个构造函数? String、Number、Boolean、Symbol(独一无二)、Object、Array、RegExp(正则)(function可以构造函数,但是不适应new)
- 基本/简单数据类型:string Number Boolean Symbol undefined null
- 引用/复杂数据类型Object 堆内存(实际的值) 栈内存(内存地址) obja={1} objb=obja 修改objb值,影响obja值 共用内存
注意点
1、字符串不能赋值,想形成新的字符串,可以先var一个空字符串,然后用concat或者+拼接。