JS String类型整理

String类型是字符串的对象包装类型,包含字符串的所有方法,在js中有着广泛的使用,本文对字符串的使用方法做一些总结。

1、字符方法

用于访问字符串中特定字符的方法。

1、charAt()

  • 接收一个基于索0的参数,返回给定位置的字符
  • "123".charAt(0)    // 1
    "123".charAt(2)    // 3
    "123".charAt(4)    // ""复制代码

2、charCodeAt()

  • 接收一个基于索0的参数,返回给定位置字符的字符编码
  • "123".charCodeAt(0)    // 49
    "123".charCodeAt(2)    // 51
    "123".charCodeAt(4)    // NaN
    "ABC".charCodeAt(2)    // 67
    "ABC".charCodeAt(3)    // NaN
    复制代码

3、索引值

  • 方括号表示法
  • IE7 及更早版本,返回undefined

str = "123"
str[0]    // 1
str[3]    // undefined复制代码

2、字符串操作方法

1、concat()

  • 用于将一个或者多个字符串拼接起来,返回拼接得到的字符串
  • 实践中更多的使用加号操作符“+”,简便易行

var str1  = "hello"
var str2 = str1.concat(' world')
str2    // hello world复制代码

2、slice()

  • 返回被操作字符串的一个子字符串,对原字符串没有影响
  • 第一个参数指定子字符串的开始位置,第二个参数表示子字符串到哪里结束。若缺少第二个参数,则将字符串的末尾作为结束位置
  • 若参数是负值,将参数与字符串长度相加

    var str = "hello world"
    str.slice(0,3)    // hel
    str.slice(3)      // lo world
    str.slice(3,-4)   // lo w复制代码

3、substring()

  • 和slice()基本一致
  • 若传入参数为负数,则把所有负值都转换为0
  • 会将较小的数作为起始位置

    var str = "hello world"
    str.substring(0,3)    // hel
    str.substring(3)      // lo world
    str.substring(3,-4)   // hel
    复制代码

4、substr()

  • 第二个参数指定返回的字符个数
  • 若参数为负数,会把第一个参数加上字符串的长度,第二个参数转换为0

var str = "hello world"
str.substr(0,3)    // hel
str.substr(3)      // lo world
str.substr(3,-4)   // ""
复制代码

3、字符串位置方法

1、indexOf()

  • 从一个字符串的开头向后搜索给定的子字符串,返回子字符串的位置。若没有找到,返回-1
  • 接收第二个参数,表示从字符串的哪个位置开始搜索

    str = "hello world"
    str.indexOf("o")    // 4
    str.indexOf("k")    // -1
    str.indexOf("o",5)  // 7
    复制代码

2、lastIndexOf()

  • 从后向前搜索

str = "hello world"
str.lastIndexOf("o")    // 7
str.lastIndexOf("k")    // -1
str.lastIndexOf("o",5)  // 4复制代码

4、trim()方法

  • 创建一个字符串的副本,删除前置以及后缀的所有空格,返回结果

str = "  hello world  "
newStr = str.trim()
newStr    // "hello world"复制代码

5、字符串大小写转换方法

  • toLowerCase(),toUpperCase(), 大小写转换的方法
  • 针对部分地区,toLocaleLowerCase(),toLocaleUpperCase()

str = "hello world"
newStr = str.toUpperCase()
newStr    // "HELLO WORLD"
newStr2 = newStr.toUpperCase()
newStr2()    "hello world"复制代码

6、字符串的模式匹配方法

用于在字符串中匹配模式(pattern)的方法

1、match()

  • 接收一个参数,正则表达式或者一个RegExp对象
  • 如果没有找到任何匹配的文本, match() 将返回 null
  • 若找到匹配的文本,返回一个数组。该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本。除了这些常规的数组元素之外,返回的数组还含有两个对象属性。index 属性声明的是匹配文本的起始字符在 stringObject 中的位置,input 属性声明的是对 stringObject 的引用
  • 如果 regexp 具有标志 g,则 match() 方法将执行全局检索,找到 stringObject 中的所有匹配子字符串。若没有找到任何匹配的子串,则返回 null。如果找到了一个或多个匹配子串,则返回一个数组。不过全局匹配返回的数组的内容与前者大不相同,它的数组元素中存放的是 stringObject 中所有的匹配子串,而且也没有 index 属性或 input 属性。

var text = "cat, bat, sat, fat"
var pattern = /.at/
var matches = text.match(pattern)
matches    // ["cat", index: 0, input: "cat, bat, sat, fat", groups: undefined]
var pattern2 = /.at/g
var matches2 = text.match(pattern2)
matches2    // ["cat", "bat", "sat", "fat"]
复制代码

2、search()

  • 接收一个参数,正则表达式或者一个RegExp对象
  • 返回字符串中第一个匹配项的索引,如果没有找到,返回-1
  • 始终从开头向后查找

    var text = "cat, bat, sat, fat"
    var pos = text.search(/sa/)
    pos    // 10复制代码

3、replace()

  • 接收两个参数。第一个参数可以是一个RegExp对象或者字符串,第二个参数可以是一个字符串或者一个函数
  • 返回替换后的结果
  • 第一个参数是字符串,只会替换第一个子字符串。若要替换所有子字符串,可以提供一个正则,且要指定全局(g)标志
  • 第二个参数是字符串,还可以使用特殊序列
  • 第二个参数还可以是函数

var text = "cat, bat, sat, fat"
var result = text.replace(/at/, "ond")
result    // "cond, bat, sat, fat"
var result2 = text.replace(/at/g, "ond")
result2    // "cond, bond, sond, fond"复制代码

4、split()

  • 基于指定的分隔符将一个字符串分割成多个字符串,并将结果放在一个数组中
  • 接收第二个参数,用于指定数组的大小,以便确保返回的数组不会超过既定大小
  • 可以接收一个正则表达式,有浏览器差异

    var colorText = "red,blue,green,yellow"
    var colors1 = colorText.split(",")    // ["red", "blue", "green", "yellow"]
    var colors2 = colorText.split(",",2)    // ["red", "blue"]
    复制代码

7、localeCompare()方法

  • 比较两个字符串
  • 如果字符串在字母表中应该排在字符串参数之前,返回一个负数
  • 如果字符串等于字符串参数,返回0
  • 如果字符串在字母表中应该排在字符串参数之后,返回一个正数

8、fromCharCode()方法

  • 接收一或多个字符编码,然后将它们转换成一个字符串

String.fromCharCode(104,101,108,108,111)    // "hello"复制代码


ES6 新增

1、字符串的遍历接口

  • 字符串可以由for...of循环遍历

    for (let codePoint of "foo") {
    console.log(codePoint)}
    // f
    // o
    // o复制代码

2、at()

  • ES7新增,返回字符串给定位置的字符,避免之前bug

3.includes(),startsWith(),endsWith()

  • includes(),返回布尔值,表示是否找到了字符串
  • startsWith(),返回布尔值,表示参数字符串是否在源字符串头部
  • endsWith(),返回布尔值,表示参数字符串是否在源字符串尾部
  • 都接受第二个参数,表示开始搜索的位置
  • endWith()的第二个参数n,针对前n个字符

var str = "hello world"
str.includes("h")    // true
str.endsWith("d")    // true  
str.startsWith("h")    // true复制代码

4、repeat()

  • 返回一个字符串,表示将原字符串重复n次
  • 参数是小数,会被向下取整
  • 参数是负数或者infinity,报错

    str = "hello".repeat(3)
    str    // "hellohellohello"复制代码

5、模板字符串

  • 模板字符串是增强版的字符串,用反引号(`)标识。它可以当做普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量
  • 嵌入变量,需要将变量写在$()中
  • 大括号中可以放入任意的js表达式,可以进行运算,以及引用对象属性,甚至调用函数

var x = 1
var y = 2
`${x} + ${y} = ${x + y}`    // "1 + 2 = 3"

var obj = {a:1, b:2}
`${obj.a + obj.b}`    // "3"

function fn () {return "hello world"}
`foo ${fn()} bar`    // "foo hello world bar"复制代码

6、其它

  • codePointAt()   正确处理4个字节存储的字符,返回一个字符的码点
  • String.fromCodePoint() 从码点返回对应字符,解决之前bug


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值