字符串概念:有一组双引号或单引号组成字符,它是一个“值类型”
字符串的恒定性:字符串的方法修改字符,不会改变原来的字符串,叫做恒定性
创建字符串
字面量
- 语法:
var 字符串名称 = "字符串内容" - 创建的字符串类型为string
var str = "你好!"
console.log(typeof(str),str) //string 你好!
String()
- 语法:
var 字符串名称 = String("字符串内容") - 创建的字符串类型为string
var str = String("你好!")
console.log(typeof(str),str) //string 你好!
构造函数创建字符串 new String()
- 语法:
var 字符串名称 = new String("字符串内容") - 创建的字符串类型为object,因为它是通过构造函数创建的
var str = new String("你好!")
console.log(typeof(str),str) //object String {'你好!'}
创建字符串的数据类型不一样
- 简单理解就是:装箱与拆箱
- 值类型 --> 引用类型 ,装箱 new
- 引用类型 --> 值类型 ,拆箱 toSting()
// 值类型 --> 引用类型 ,装箱 new
// 引用类型 --> 值类型 ,拆箱 toSting()
var str = new String("箱子")
console.log(typeof str,str) //object String {'箱子'}
var str2 = str.toString()
console.log(typeof str2,str2) //string 箱子
字符串方法
20个:
charAt(),charCodeAt(),String.formCharCode(),search(),match(),indexOf(),lastIndexOf(),slice(),substring(),substr(),concat(),repalce(),split(),repeat(),toUpperCase(),toLowerCase(),trim(),padStart(),padEnd(),includes()
下标以及字符串与Unicode码转换
charAt()
- 通过下标找字符
var str = "abc123"
console.log(str[2]) // c
console.log(str.charAt(2)) // c
charCodeAt()
- 返回对应下标的Unicode码
var str = "你好a"
console.log(str.charCodeAt(0)) // 20320
console.log(str.charCodeAt(1)) //22909
console.log(str.charCodeAt(2)) //97
String.formCharCode()
- 把unicode码转为对应的字符串
var str = String.fromCharCode(20320,22909,97)
console.log(str) // 你好a
查找系列
search()
- 查找对应的字符
- 找到了返回下标,找不到返回-1
- 支持正则表达式
var str= "abc123"
console.log(str.search("c")) //2
console.log(str.search("z")) //-1
console.log(str.search(/a/)) //0
match()
- 查找对应的字符
- 找到了返回数组,找不到返回null
- 支持正则表达式
var str= "abc123"
console.log(str.match("c")) //['c', index: 2, input: 'abc123', groups: undefined]
console.log(str.match("1c")) //null
indexOf()
- 查找对应的字符
- 找到了返回下标,找不到返回-1
- 不支持正则表达式
- 第二个参数,默认从0开始,也可以指定位置
var str= "abc123"
console.log(str.indexOf("c")) //2
console.log(str.indexOf("z")) //-1
console.log(str.indexOf(/a/)) //-1
lastIndexOf()
- 同上indexOf
includes()
- 查找是否包含指定字符
- 包含返回true,不包含返回false
var str= "abc123123"
console.log(str.includes("c")) //true
截取系列
slice()
- slice(开始下标,结束下标)
- 包含开始下标,不包含结束下标
- 不写结束下标,默认截取到最后
var str= "abc你好世界"
console.log(str.slice(3,5)) //你好
console.log(str.slice(3)) //你好世界
substring()
- substrig(开始下标,结束下标)
- 包含开始下标,不包含结束下标
- 不写结束下标,默认截取到最后
- 可以自动调整参数的顺序,从小到大
var str= "abc你好世界"
console.log(str.substring(5,3)) //你好
console.log(str.substring(3)) //你好世界
substr()
- substr(开始索引,截取个数)
var str= "abc你好世界"
console.log(str.substr(3,4)) //你好世界
合并(拼接)
concat()
- 相当于
+号
var str1 = "abc"
var str2 = "你好"
console.log(str1.concat(str2)) //abc你好
console.log(str1+str2) //abc你好
替换
replace()
- replace("要替换的字符","替换成什么")
- 【注】
- 只能替换第一个对应的字符
- 需要结合正则表达式的
g(全局),才能完成全部替换
var str = "abacadae"
console.log(str.replace("a","*")) //*bacadae
console.log(str.replace(/a/g,"*")) //*b*c*d*e
切割
split()
- split("以什么为目标分割")
- 返回一个新数组
var str = "bacadae"
var arr = str.split("a")
console.log(arr) //(4) ['b', 'c', 'd', 'e']
重复
repeat()
- repeat(重复的次数)
var str = "你好!"
console.log(str.repeat(5)) //你好!你好!你好!你好!你好!
英文字母大小写
toUpperCase()
- 转大写
var str = "abc"
var res = str.toUpperCase()
console.log(res) //ABC
toLowerCase()
- 转小写
var str = "ABC"
var res = str.toLowerCase()
console.log(res) //abc
填充
padStart()
- 前面填充
- padStart(字符长度,"填充的字符")
- 会先判断字符串中的字符长度是否足够,
- 不够就用""中的字符在字符串的前面进行填充
>=字符长度,就输出原字符串
var str = "你好呀!"
var res= str.padStart(10,"*")
console.log(res) //******你好呀!
var str = "abcdefghijk"
var res= str.padStart(10,"*")
console.log(res) //abcdefghijk
padEnd()
- 后面填充
- padEnd(字符长度,"填充的字符")
- 会先判断字符串中的字符长度是否足够,
- 不够就用""中的字符在字符串的前面进行填充
>=字符长度,就输出原字符串
var str = "你好呀!"
var res= str.padEnd(10,"*")
console.log(res) //你好呀!******
var str = "abcdefghijk"
var res= str.padEnd(10,"*")
console.log(res) //abcdefghijk