JS-String详解

 

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