字符串
字符串概述
字符串是一个数据结构(串),将同样的内容串在一起,因为在对应的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开始写
静态方法(通过构造方法名直接调用的方法叫做静态方法 是对应的static修饰的)
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码转为字符串
转大写(toUpperCase)
var str = "abcA"
console.log(str.toUpperCase) //ABCA
var str1 = str.toUpperCase()
console.log(str1) //ABCA
转小写(toLowerCase)
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比对)
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/280565.html