String详解
一,字符串概念
1,两种定义方式:
1, var str ='hello'
2,var object = new String('hello')
new 关键字构建的都是 引用数据类型 / 对象
引用数据类型的两个对象的值和对应的两个引用都不一样
2,两者的区别
使用直接赋值。字符串的形式给定当前变量为基本数据类型,并返回转换后的值
使用new String() 进行定义的形式 构建的是引用类型的对象
new String() 里面的参数可以使任意类型 最后都会调用 toString 方法转为 String 类型
1 var stra = new String(10)
2 var strb = String('10')
3 var strc = '10'
4 var number = 10
5 console.log(stra == strc) //true
6 console.log(strc == strb) //true
7 console.log(stra == strb) //false
8 console.log(strc == number) //true
9 console.log(strc === number) //false
10 console.log(stra === strc) //false
11 console.log(stra == number) //true
二,字符串属性
ECMAScript 字符串不可变 它是一个常量
length 属性:字符串的长度length属性是不可以修改的,只能获取;
a,计算字符串的长度,一个字符为 1 个位置
b,也可以通过下标获取对应的字符,下标从 0 开始,到 length-1 结束
1 var str = '123'
2 console.log(str.length) //输出 3 长度为 3
3 str.length = 10
4 console.log(str.length) //输出 3 无法修改
三,字符串的常用方法
字符串是一个容器,是有对应的增删改查的方法,但是由于字符串是常量是只读的。所有增删改查不会修改原来的字符串,而是返回一个新的字符串;
1,查询:
a,通过对应下标查询对应的字符,相当于字符串的下标获取;
b,charAt 查询,根据下标获取字符串,返回的是字符串,同上面的方法一样;
c,charCodeAt 获取对应下标位置的 ASCII 码,编码操作;
1 var str = 'abc'
2 console.log(str.charCodAt(0))
3 //获取下标为 0 的字符串 'a' 的ASCII码 返回64
d,String.fromCharCode 将 ASCII 转换为 字符串,解码操作。
它是静态的方法,同 Math 方法一样,是系统内置的静态方法
1 var strCode = String.fromCharCode(100)
2 console.log(strCode); //返回 d
e,indexOf 查询,根据字符串来返回第一次出现的下标,找不到返回 -1 ;
f,lastindexOf 查询,同上运行方法是一样的,不过它是从后往前查的;
1 var str = 'abca'
2 str.indexOf('a') //返回 0
3 str.indexOf('a', 0) //返回 0
4 str.indexOf('a', 1) //返回 3
g,search 查询:它搜索的内容必须要连在一块,返回第一个匹配的位置,返回为当前找到的下标,找不到则返回 -1 ;
2,替换方法:replace()
replace() 替换字符串:替换只能执行一次,不能够进行全局匹配,如果需要全局匹配,则需要正则表达式;
3,截取方法:substring();sub( );substr( );slice( );
substring( ) 从开始位置到结束位置截取,返回新的字符串;
substr( ) 截取字符串,返回字符串,第一个是字符串下标,第二个参数规定被提取部分的长度
sub( ) 将内容填充到 sub 的html标签中,然后生成一个新的字符串进行返回;
slice( ) 和 substring( ) 一样,但里面的起始和结束可以不写,不包括最后一位,不写就是全部截取;
4,分割方法:split() 可以使用正则
split(separator,howmany) 分割为数组,数组的 join 连接为字符串。可以正则截取,返回值为 string 类型数组;
separator(字符串或正则表达式)
howmany(可以指定返回的数组的最大长度, 可以省略) 就是返回数组的个数;
注:如果空字符串(“”)用作separator, 那么stringObject中的每个字符之间都会被分割。
5,连接方法:" + " 号 ; concat( );
concat( ) : 将需要连接的字符串连接在后面,返回一个新的字符串;
6,去前后空格:trim( ) 没有参数,返回一个新的值;
7,包含:includes( ) 返回的是布尔值,找是否包含这个字符串
8,toString 方法:转为 string 类型; valueOf( ) 方法:返回对应的原本的值;
9,大小写转换
1、转换成大写:toUpperCase()
2、转换成小写:toLowerCase()
四,扩展--正则表达式和常用方法
RegExp 正则对象 一般以两个 // 包起来
a,/^ $/ ^ 表示开头,$ 表示结尾
1 var reg = /^abc$/
2 var str = 'cbacbaabcabc'
3 console.log(str.search(reg));
4 //查找正则匹配的abc出现第一次的位置 因为search搜索的内容必须连在一块 返回结果 -1
5 var str1 = 'abc'
6 console.log(str1.search(reg));
7 //返回 0 必须以a开头 c结尾 中间包含b
b, [ ] 表示元素其中一个, { } 表示个数
1 var str = 'abcefg'
2 var rex = /[df]/ //匹配其中一个即可
3 console.log(str.search(rex)) //返回 4
4 var str = 'acabcefg'
5 var rex = /[ab]{2}/
6 //匹配的个数为俩个,匹配的项为ab,aa,bb,ba;
7 console.log(str.search(rex)) //返回 2
c, + 表示一个或者多个
1 var str = 'bbaacca'
2 var rex = /[a]+/
3 //匹配的项为 a, aa, aaa, aaaa, ......
4 console.log(str.search(rex)); //返回 2
d,在 [ ] 内可以用 - 表示区间,但必须是正的区间,也就是按照 ASCII 码表的顺序排序
1 var rex = /[A-Z]/ //匹配的是A,B,C,D......Z 26个字母
2 var rex = /0-9/ //匹配的是0,1,2,......9 10个数值
e,\w 表示字母,数字,下划线 \W (大写) 相反 除了字母,数字,下划线其它都匹配
1 var rex = /\w/ //匹配字母 数字 及下划线
2 var str = '_1234abc'
3 console.log(str.serach(rex)); //返回 0

浙公网安备 33010602011771号