1.字符串的介绍及字符串声明的两个方式
定义方式
var 变量 = 字符串值
使用new 关键字定义
通过直接赋值的形式是基本数据类型 通过new关键词是对象类型(引用数据类型)
var strobj = new String//(true)返回的是一个字串符 var strobj1 = new String('hello world')//返回的是一个字符串 console.log(strobj)//(true)转true为字符串 存入对应的是strobj变量 console.log(strobj1)//('hello world')
字符串是JavaScript的一种数据类型 用"" ''括起来的就是字符串(基本数据类型)
var str = 'str' var str1 = "hello" console.log(str); console.log(str1);
使用直接赋值 字符串的形式给定当前变量为基本数据类型
使用new String() 进行定义的形式 构建是引用类型的对象
new String()里面的参数可以是任意类型 最后都会调用toString方法转为String类型
如果不使用new关键词 等于没有开启新的内容来存储引用也就是当前的类型不是对象类型 基本数据类型
而使用了new关键词 等于开辟了一个新的内存空间存储 那么类型就是对象类型
2.字串符的属性
数组是一个容器,字符串也是一个容器
length属于,计算字符串的长度, 一个字符为1个位置
var str = '123' console.log(str.length)//3 长度为3
//练习 var strA = new String(10) var strB = new 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 因为strA转为number类型 10 == 10
也可以通过下标获取对应的字符 下标也是从0开始到length-1结束
数组是可变 字符串是不可变的
数组的length属性是可以修改的 字符串的length只能获取不能修改
字符串增删改查方法 不能操作原本的字符串 只能返回一个新的字符串
字符串不能改 因为他是常量 不能修改的量 (只读变量)
不能通过length改变字符串的长度 不能通过下标赋值来改变字符串
3.字符串的常用方法
字符串是一个容器,所有对应的存在增删改查的方法
但是由于字符串是只读 增删改的方法是不会修改原本的字符串 而是以返回一个新的字符串
查询对应的字符,相当于字符串的下标获取
var str = 'abc' console.log(str[0]);//获取a //通过charAt方法来获取 返回的是字符串 根据下标来获取字符串 console.log(str.charAt(0));//获取a str.charAt(0) 等同于 str[0] //获取ascii码 获取对应下标位置的字符的ascii码 console.log(str.charCodeAt(0)) //97 获取下标为0位置的字符a的ascii码 console.log(str.charCodeAt(1)) //98 获取下标为1的位置的字符b的ascii码
将ascii反转为字符
100 的字符为d fromCharCode静态方法 利用内置对象.对应的方法 这个方法为内置的静态方法
Math.pow 也是静态方法
fromCharCode 根据ascii转换为对应的字符串 ascii码解码为字符串
var codeStr = String.fromCharCode(100) console.log(codeStr); //d
indexOf 根据字符串来返回对应的第一次出现的下标 找不到-1
console.log(str.indexOf('a')); //0 console.log(str.indexOf('a',1)); //-1 var str1 = 'abca' console.log(str1.indexOf('a')); //0 console.log(str1.indexOf('a',1)); //3
lastIndexOf 根据字符串返回第一个出现的下标 从后往前找
console.log(str1.lastIndexOf('a'));//3 console.log(str1.lastIndexOf('a',1));//0
4.search及正则讲解
查询方法
var str = 'cbacbaabc' //查询方法 返回第一个匹配的位置 返回的为当前找到的下标 //如果找不到返回 -1 var n = str.search('abc') console.log(n)//返回值为6 var n = str.search('ddd') console.log(n); //找不到返回-1 //传入为string类型的时候 根据你传入的参数进行对比 返回第一次对比成功的下标 如果没有返回-1
Regxp正则对象,一般以两个//包起来
var str = 'cbacbaabc' var reg =/abc/ //正则对象 console.log(str.seach(reg))//返回为6 // 什么是正则表达式 正则表达式是一个用于匹配的表达式 他可以用来匹配任意的字符串 // RegExp为正则对象 一般的正则表达式以// 包起来 里面书写就是对应匹配的正则表达式 // /abc/ 匹配 abc的正则
正则表达式的常用内容
^表示开头 $表示结尾
var str = 'cbacbaabc' var reg = /^abc$/ var str = 'cbacbaabcabc' console.log(str.search(reg));//查找正则匹配的abc出现第一次出现的位置 -1 var str = 'abc' console.log(str.search(reg));//返回0
5.replace替换的用法
替换匹配的值,变成另外一个值,返回一个新的字符串
var str = 'ababababa' //将所有的a替换为c var newstr = str.replace('a','c')//cbababab将a替换为c,这里只能运行一次,只会找到第一个a console.log(newstr)//cbababab //循环遍历 indexof 找到第一个下标 如果没有找到返回-1 for(var i=0;i<str.length;i++){ if(str.indexof('a')!=-1){ str = str.replace('a','c')//进行替换黄替换的数据设置给对应的字符串 }else{//里面没有a就退出 break } }console.log(str)//cbcbcbcbc
replace也同样支持正则
参数1位对应的搜索条件(支持string或者正则),参数2为替换的内容
replace在search的基础上做替换
6.substring截取的用法
// 截取方法 返回新的字符串 var str = 'abcdefg' var newStr = str.substring(1,3) //开始位置下标 截取到结束位置下标 不包含结束位置 console.log(newStr); //bc
7.split分割的用法
//分割方法 分割为数组 数组的join连接成字符串 var str = 'a,b,cd,e' //可以根据正则截取 返回值为string类型数组 var strArr = str.split(',') //根据,来进行分割 console.log(strArr); var strArr = str.split(',',2) //limit表示数量 //不写表示所有的全部填入数组 写上去就是填入指定个数的元素到数组(从前往后填入) console.log(strArr);
8.大小写转换的用法
var str = 'ABccddEF' var str1 = str.toLowerCase() console.log(str1); //转小写 var str2 = str.toUpperCase() console.log(str2); //转大写 //其他对应的string方法是后面es6以后加强的方法
9.Math
数学对象,关于数学运算的属性和方法
Math.PI
Math.floor()
Math.ceil()
Math.round()
Math.pow()
Math.sqrt()
Math.abs()
Math.random()
生成一个min~max的随机数
Math.random() * (max - min) + min
10.Date
获取系统时间以及对日期做一些操作
获取当前日期 new Date()
时间戳:从1970年到当前日期对象总的毫秒数
11.获取系列API
getFullYear()
getMonth() 0~11
getDate()
getDay() 0~6星期
getHours()
getMinutes()
getSeconds()
getTime() 获取时间戳
12.设置系列API
获取用get系列,设置换成set即可,但是day星期几能设置
如果设置传了超过正常日期的参数,会自动计算
转换字符串
toLocaleString() 转换为当地字符串
toUTCString() 转换为标准时区字符串