字符串是一个数据结构(串),将同样的内容串在一起,因为在对应的js里面字符串是属于一个值类型(值类型是常量 常量是不能变的)
字符串是不能改变的。作为存储结构的增删改查方法,不能针对本身,而是返回一个新的字符串。
1.值类型赋值(常用)基本类型
var str = 'hello world'
2.以new关键词声明(引用了对应的值的地址)引用类型
用new产生的变量都是引用类型的变量,也叫对象
var str = new String('hello world')//相当于开了两个空间
3.直接用String
var str =String('hello')
ES6新增 字符串模板
var a = 'jack' var str =`hello string ${a}`//esc下面的这个键 解析${} 以变量解析 console.log(str); //hello string jack
new String() 和 String() 区别
var s1 = new String(‘hello world’); var s2 = String(‘hello world’); console.log(typeof s1); //object console.log(typeof s2); //string
new String 是构建一个String对象(引用数据类型 有地址的指向)
String单纯的将对应的传入参数转为String类型(值类型)
(当不用new运算符调用String()时,它只是转换成原始的字符串,并返回转换后的值.)
length属性 返回字符串的长度 (包含空格及换行)字符串是不可变的 只读(不可赋值)
var str='a b' console.log(str.length) //3
通过下标获取对应的字符串
var str='a b' console.log(str[3]) //b
通过下标找字符串(char字符)
charAt(下标)
var str= 'abc' console.log(str.charAt(0)) //a
charCodeAt(ASCII码)
var str= 'abc' console.log(str.charCodeAt(0)) ///97 --效率更高
通过字符串找下标(找不到返回-1 找得到返回对应的下标值number)
indexOf (第一次出现的地方) / lastIndexOf(最后一次出现的地方)
var str = 'abcd' console.log(str.indexOf('ab')) //返回下标0 console.log(str.indexOf('e')) //返回-1 console.log(str.indexOf('b',2)) //从下标2开始查找b 找第一个出现b的位置 -1 var str1 = 'abbbccde' console.log(str.lastIndexOf('b')) //3 console.log(str.lastIndexOf('b',0)) //从0的位置开始往前找 -1 console.log(str.lastIndexOf('b',4)) //3 从4的位置往前找,有则显示下标值 //默认情况下 第二个值可以省略,默认为str.length-1 search方法(和indexOf一样返回第一次出现的位置 支持正则表达式) var str = 'abc' //g表示进行全局匹配 i表示忽略大小写 w表示数字字母下划线 console.log(str.search(/ab/)) //0 /ab/ 为正则表达式 console.log(str.search(/ab/,0)) //默认从0开始写
fromCharCode 将对应的ASCII码转为字符串
var str= String.fromCharCode('97') //返回值是一个字符串 console.log(str) //a
contact 将多个字符串转为连接成一个字符串返回
var str = "hello".contact('world') console.log(str) //字符串的
支持正则的方法(4个)
search 查找 (找到返回下标 没找到返回-1)
replace 替换 (将找到的字符串替换成一个新的字符串,只能执行一次,因此需要执行多次时可以进行全局匹配,使用正则表达式)
var str ="abca" var str1 = str.replace("a","hello") //将a替换成hello console.log(str1) //hellobca 只能替换第一个a console.log(str.replace(/a/g,"hello"))//所有的a都能替换掉
split 分隔(根据分隔符拆分成数组)
//分割 成为一个数组 split 数组变成字符串 join (默认以,) var str = '1,2,3' //默认不是以,作为分割 默认不分割 直接填入到数组 console.log(str.split()); //['1,2,3'] console.log(str.split(',')); //['1','2','3'] str.join(' ') //数组连接成字符串
match 匹配(返回一个数组(匹配的内容))
var str = "abcacc" //默认只找第一个匹配,加入到数组 var arr = "str.match("a")" console.log(arr) //
substring substr
substring(开始的下标,结束的下标)不包含结束的下标
var str = 'abcdef' console.log(str.substring(1)) //bcdef console.log(str.substring(1,3)) //bc
substr(开始的下标,截取的个数)开始的下标如果为负数,从后往前进行数,包括开始的下标
var str = 'abcdef' console.log(str.substr(1)) //bcdef console.log(str.substr(1,3)) //bcd
静态方法
fromCharCase 根据ASCII码转为字符串
var str = "abcA" console.log(str.toUpperCase) //ABCA var str1 = str.toUpperCase() console.log(str1) //ABCA
var str = "aBCA" console.log(str.toLowerCase) //abca
Math类(数学类 一切和数学计算相关的方法都在这个里面且是静态方法)
random 随机数
round四舍五入
floor向下取整
ceil向上取整
pow取幂次方
sqrt开平方
abs取绝对值
max最大值
min最小值
alert(Math.max(1,3,4,'10abc')); //NaN alert(Math.max(1,3,4,NaN)); //NaN alert(Math.max(1,3,4,undefined)); //NaN
//随机产生对应的区间内容的数值 Math.random()*差值(最大值-最小值)+最小值 function randomNumber(min,max){ return Math.round(Math.random()*(max-min)+min) } //随机生成颜色 function randomColor(){ var r=randomNumber(0,255) var g=randomNumber(0,255) var b=randomNumber(0,255) return rgb(${r},${g},${b}) } //Math.round 四舍五入 //Math.random 生成0-1的随机数(包含0 不包含1)
回文字符串 马拉车算法
dp动态规划(dp数组)
字符串最长对比(hash比对)