String 详解
一,两种定义方式:
1, var str =’hello’
2,var object = new String(‘hello’)
new 关键字构建的都是 引用数据类型 / 对象
引用数据类型的两个对象的值和对应的两个引用都不一样
3,两者的区别
使用直接赋值。字符串的形式给定当前变量为基本数据类型,并返回转换后的值
使用 new String() 进行定义的形式 构建的是引用类型的对象
new String() 里面的参数可以使任意类型 最后都会调用 toString 方法转为 String 类型
var stra = new String(10);
var strb = String("10");
var strc = "10";
var number = 10;
console.log(stra == strc); //true
console.log(strc == strb); //true
console.log(stra == strb); //false
console.log(strc == number); //true
console.log(strc === number); //false
console.log(stra === strc); //false
console.log(stra == number); //true
二,字符串属性
ECMAScript 字符串不可变 它是一个常量
length 属性:字符串的长度 length 属性是不可以修改的,只能获取;
a,计算字符串的长度,一个字符为 1 个位置
b,也可以通过下标获取对应的字符,下标从 0 开始,到 length-1 结束
var str = "123";
console.log(str.length); //输出 3 长度为 3
str.length = 10;
console.log(str.length); //输出 3 无法修改
三,字符串的常用方法
字符串是一个容器,是有对应的增删改查的方法,但是由于字符串是常量是只读的。所有增删改查不会修改原来的字符串,而是返回一个新的字符串;
1,查询:
a,通过对应下标查询对应的字符,相当于字符串的下标获取;
b,charAt 查询,根据下标获取字符串,返回的是字符串,同上面的方法一样;
c,charCodeAt 获取对应下标位置的 ASCII 码,编码操作;
var str = "abc";
console.log(str.charCodAt(0)); //获取下标为 0 的字符串 'a' 的ASCII码 返回64
d,String.fromCharCode 将 ASCII 转换为 字符串,解码操作。
它是静态的方法,同 Math 方法一样,是系统内置的静态方法
var strCode = String.fromCharCode(100);
console.log(strCode); //返回 d
e,indexOf 查询,根据字符串来返回第一次出现的下标,找不到返回 -1 ;
f,lastindexOf 查询,同上运行方法是一样的,不过它是从后往前查的;
var str = "abca";
str.indexOf("a"); //返回 0
str.indexOf("a", 0); //返回 0
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,/^ $/ ^ 表示开头,$ 表示结尾
var reg = /^abc$/;
var str = "cbacbaabcabc";
console.log(str.search(reg)); //查找正则匹配的abc出现第一次的位置 因为search搜索的内容必须连在一块 返回结果 -1
var str1 = "abc";
console.log(str1.search(reg)); //返回 0 必须以a开头 c结尾 中间包含b
b, [ ] 表示元素其中一个, { } 表示个数
var str = "abcefg";
var rex = /[df]/; //匹配其中一个即可
console.log(str.search(rex)); //返回 4
var str = "acabcefg";
var rex = /[ab]{2}/; //匹配的个数为俩个,匹配的项为ab,aa,bb,ba;
console.log(str.search(rex)); //返回 2
c, + 表示一个或者多个
var str = "bbaacca";
var rex = /[a]+/; //匹配的项为 a, aa, aaa, aaaa, ......
console.log(str.search(rex)); //返回 2
d,在 [ ] 内可以用 - 表示区间,但必须是正的区间,也就是按照 ASCII 码表的顺序排序
var rex = /[A-Z]/; //匹配的是A,B,C,D......Z 26个字母
var rex = /0-9/; //匹配的是0,1,2,......9 10个数值
e,\w 表示字母,数字,下划线 \W (大写) 相反 除了字母,数字,下划线其它都匹配
var rex = /\w/; //匹配字母 数字 及下划线
var str = "_1234abc";
console.log(str.serach(rex)); //返回 0
f,\s 空白字符 \S(大写) 非空白字符
五,Math 的静态方法
1,静态属性 ;
Math.PI; //圆周率 π
Math.E; //无理数
2,关于取整的几个方法
向下取整:Math.floor( ) 3.1 == 3
向上取整:Math.ceil( ) 3.1 == 4
四舍五入:Math.round( ) 3.1 == 3
幂次方:Math.pow( ) Math.pow(2,4) 2的 4 次方
开平方:Math.sqrt( )
随机数:Math.random( ) 随机生成 0-1 的数,不包含 1 包含 0 ;
取绝对值:Math.abs( ) -1 == 1