字符串

139 阅读4分钟

字符串概念:有一组双引号或单引号组成字符,它是一个“值类型”

字符串的恒定性:字符串的方法修改字符,不会改变原来的字符串,叫做恒定性

创建字符串

字面量

  • 语法: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