前言
1.基本包装类型
- 为了方便操作基本数据类型,JavaScript 还提供了三个特殊的引用类型:
String、Number和Boolean - 基本包装类型就是把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法
我们看看下面代码有什么问题?
<script>
var str = 'zhangsan'
console.log(str.length); //8
</script>
按道理基本数据类型是没有属性和方法的,而对象才有属性和方法,但上面代码却可以执行,这是因为 js 会把基本数据类型包装为复杂数据类型,其执行过程如下 :
<script>
// 1.生成临时变量,把简单类型包装为复杂数据类型
var temp = new String('zhangsan');
// 2.赋值给我们声明的字符变量
str = temp;
// 3.销毁临时变量
temp = null;
</script>
2.字符串的不可变
- 指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间。
<script>
var str = 'zhangsan'
str = 'zs'
// 当重新给 str 赋值的时候,常量'abc'不会被修改,依然在内存中
// 重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
// 由于字符串的不可变,在大量拼接字符串的时候会有效率问题
var str = ''
for (var i = 0; i < 1000; i++) {
str += i;
}
// 这个结果需要花费大量时间来显示,因为需要不断的开辟新的空间
</script>
3.根据字符返回位置
- 字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串
| 方法名 | 说明 |
|---|---|
indexOf(‘要查找的字符’,开始的位置) | 返回指定内容在元字符串中的位置,如果找不到就返回-1,开始的位置是index索引号 |
lastIndexOf() | 从后往前找,只找第一个匹配的 |
<script>
var str = "asdfghja"
console.log(str.indexOf('a')); //从前往后找 0
console.log(str.indexOf('a', 1)); //从索引号是1的位置开始找 7
console.log(str.lastIndexOf('a')); //从后往前找 7
</script>
4.根据位置返回字符
| 方法名 | 说明 | 使用 |
|---|---|---|
charAt(index) | 返回指定位置的字符(index字符串的索引号) | str.charAt(0) |
charCodeAt(index) | 获取指定位置处字符的ASCII码(index索引号) | str.charCodeAt(0) |
str[index] | 获取指定位置处字符 | HTML,IE8+支持和charAt()等效 |
<script>
var str = "asdfghja"
console.log(str.charAt(1)); //s
console.log(str.charCodeAt(1)); //115
console.log(str[1]); //s
</script>
5.字符串操作方法
| 方法名 | 说明 |
|---|---|
concat(str1,str2,str3…) | concat() 方法用于连接两个或对各字符串。拼接字符串 |
substr(start,length) | 从 start 位置开始(索引号), length 取的个数 |
slice(start,end) | 从 start 位置开始,截取到 end 位置 ,end 取不到 (两个都是索引号) |
substring(start,end) | 从 start 位置开始,截取到 end 位置 ,end 取不到 (基本和 slice 相同,但是不接受负) |
<script>
var str1 = "abcabc"
var str2 = "asdasd"
var str3 = str1.concat(str2)
console.log(str3); //abcabcasdasd
var str4 = str1.substr(0, 3)
console.log(str4); //abc
var str5 = str1.slice(0, 3)
console.log(str5); //abc
</script>
6.replace()
replace()方法用于在字符串中用一些字符替换另一些字符
<script>
var str = "abcdefgaa"
console.log(str); //abcdefgaa
var strNew = str.replace('a', 'x')
console.log(strNew); //xbcdefgaa
//replace只能替换掉第一个字符
//如果要把str中的a全部替换,需要这样:
while (str.indexOf('a') != -1) {
str = str.replace('a', 'x')
}
console.log(str); //xbcdefgxx
</script>
7.split()
split()方法用于切分字符串,它可以将字符串切分为数组。在切分完毕之后,返回的是一个新数组
<script>
var str1 = "abcd"
console.log(str1.split('')) //['a', 'b', 'c', 'd']
var str2 = "a.b.c.d"
console.log(str2.split('.')) //['a', 'b', 'c', 'd']
</script>
版权声明:本文为m0_61794291原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。