字符串以及其方法--js(十六)

131 阅读7分钟

一、严格模式(了解)

  • JS 是一个相对不是很严谨的语言, 在开发的时候一些代码也不是很严格, 严格模式就是对开发的时候写的代码做了一些要求

1、如何开启严格模式

  • 要开启严格模式, 直接在代码最开始的位置写上字符串 'use strict'

2、严格模式的规则

  1. 声明变量必须有 var 关键字
  2. 函数的形参不可以重复

二、字符串

1、创建字符串(了解)

  • 字面量
  • 构造函数创建
var str1 = "hello";
var str2 = new String("hello");

1)ASCII 字符集(了解)

  • 计算机只能存储二进制数据 0101010
  • 我们的 大写字母; 小写字母; 符号 之类的内容也是由二进制数字组成的
  • 或者说 我们的字母符号这些东西写都有一个对应的编号, 然后计算机存储的时候是存储的这些编号,不过我们看到的时候, 是通过这些编号解析成我们看到的内容
  • 所以我们计算机存储的字母符号之类的并不是存储了这个字母, 而是存储了这个字母对应的编号, 然后给我们看到的时候是通过这个编号找到了对应的字母给我们看

2)unicode 编码

  • ASCII 只有 128 个字符的编码结构, 这是因为他出现的比较早, 而且是美国发明的, 所以在早期这些内容完全足够
  • 但是这个世界要存储的东西就不够, 比如我们的汉字, 所以就出现了 unicode 编码, 也叫(万国码, 统一码)
  • unicode 和 ASCII 一样的对照表, 只不过存的东西特别多, 基本包含了世界上大部分国家的文字, 所以我们的文字在存储的时候 都是按照 unicode 编码转换成了数字进行存储
  • 我们的 UTF-8 就是一种 8 位的 unicode 字符集

2、一些操作字符串的常用方法

  • charAt / charCodeAt / toLowerCase / toUpperCase

    • charAt
      • 语法: 变量.charAt(索引)
      • 作用: 找到字符串中指定索引位置的内容然后返回
      • 返回值: 字符串中指定索引位置的内容;如果字符串中没有对应的下标那么返回一个空字符串
         var str = 'QF123'
         var res = str.charAt(0)
         console.log(res)//Q
    
    • charCodeAt
      • 语法: 变量.charCodeAt(索引)
      • 作用: 找到字符串中指定索引位置的 unicode 编码然后返回
      • 返回值: 字符串中指定索引位置的 unicode 编码;如果字符串中没有对应的下标那么返回一个NaN
        var str = 'QF123'
        var res = str.charCodeAt(0)
        console.log(res)//81 相当于Q
    
    • toLowerCase
      • 语法: 变量.toLowerCase()
      • 作用: 将字符串转换为小写
      • 返回值: 转小写后的字符串
        var str = 'QF123abc'
        var res = str.toLowerCase()
        console.log(res)//qf123abc
    
    • toUpperCase
      • 语法: 变量.toUpperCase()
      • 作用: 将字符串转换为大写
      • 返回值: 转大写后的字符串
     var str = 'QF123abc'
     var res = str.toUpperCase()
     console.log(res)//QF123ABC
  • substr / substring / slice

    • substr
      • 语法: 变量.substr(开始索引, 截取多少个)
      • 作用: 复制指定区域的字符串
      • 返回值: 复制到的内容
           var str = 'whynewbeeyeah'
           //从下标3开始,截取6个
           console.log(str.substr(3,6))//newbee
    
    • substring
      • 语法: 变量.substring(开始索引, 结束索引)
      • 作用: 截取字符串
      • 返回值: 截取出来的字符串
      • 注意: 参数包前不包后
        var str = 'whynewbeeyeah'
        //从下标3开始,到下标9结束,但是包前不包后
        console.log(str.substring(3,9))//newbee
        console.log(str.substring(3,-1))//why
        console.log(str.substring(3))//newbeeyeah从3开始到结束
        console.log(str.substring())
        //whynewbeeyeah复制整个字符串
    
    • slice
      • 语法: 变量.slice(开始索引, 结束索引)
      • 作用: 截取字符串
      • 返回值: 截取出来的字符串
      • 注意: 参数包前不包后
        var str = 'whynewbeeyeah'
        //从下标3开始,到下标9结束,但是包前不包后
        console.log(str.slice(3,9))//newbee
        console.log(str.slice(3,-3))//newbeey
        console.log(str.slice(3))//newbeeyeah从3开始到结束
        console.log(str.slice())
        //whynewbeeyeah复制整个字符串
    
  • concat / indexOf / lastIndexOf / split

    • concat
      • 语法: 变量.concat(字符串1, 字符串2...)
      • 作用: 合并数据到执行的字符串中
      • 返回值: 合并后的一个新字符串
         var str = 'QF001'
         console.log(str.concat('!@#','why','+_)(*)'))//QF001!@#why+_)(*)
    
    • indexOf
      • 语法: 变量.indexOf(查找的字符, 开始索引)
      • 作用: 查找当前字符串中是否包含指定字符
      • 返回值: 找到返回第一次出现的首字母索引位置, 找不到就返回 -1
        var str = 'QF001QF'
        console.log(str.indexOf('a'))//-1
        console.log(str.indexOf('Q'))//0
        console.log(str.indexOf('Q',1))//5
    
    • lastIndexOf
      • 语法: 变量.lastIndexOf(查找的字符, 开始索引)
      • 作用: 查找当前字符串中是否包含指定字符 (从后往前)
      • 返回值: 找到返回第一次出现的首字母索引位置, 找不到就返回 -1
        var str = 'QF001QF'
        console.log(str.lastIndexOf('a'))//-1
        console.log(str.lastIndexOf('Q'))//5
        console.log(str.lastIndexOf('Q',1))//0
    
    • split
      • 语法: 变量.split('分隔符')
      • 作用: 根据我们传递的分隔符,将字符串做一个拆分
      • 返回值: 拆分好的字符串,组成一个数组
      • 注意:如果传递的分隔符是一个空字符,那么会将整个字符串按照每一个字符拆分开,放在一个数组中
        var str = 'value=QF001=QF002=QF003'
        console.log(str.split('='))// ['value', 'QF001', 'QF002', 'QF003']
        console.log(str.split('@'))//['value=QF001=QF002=QF003']
        console.log(str.split())//['value=QF001=QF002=QF003']
        console.log(str.split(''))//['v', 'a', 'l', 'u', 'e', '=', 'Q', 'F', '0', '0', '1', '=', 'Q', 'F', '0', '0', '2', '=', 'Q', 'F', '0', '0', '3']
    
  • trim / trimStart / trimEnd

    • trim

      • 语法: 变量.trim()
      • 作用: 把字符串左右空格去除
      • 返回值: 去除空格后的字符串
    • trimStart(trimLeft)

      • 语法: 变量.trimStart()
      • 语法: 变量.trimLeft()
      • 作用: 把字符串左边空格去除
      • 返回值: 去除左边空格后的字符串
    • trimEnd(trimRight)

      • 语法: 变量.trimEnd()
      • 语法: 变量.trimRight()
      • 作用: 把字符串右边空格去除
      • 返回值: 去除右边空格后的字符串
        var str1 = '1 2 3'
        var str2 = '123'
        console.log('源字符串' + str1)//源字符串1 2 3
        console.log('源字符串' + str2)//源字符串123
        console.log('trim' + str1.trim())//trim1 2 3
        console.log('trimStart' + str1.trimStart())//trimStart1 2 3
        console.log('trimLeft' + str1.trimLeft())//trimLeft1 2 3
        console.log('trimEnd' + str1.trimEnd())//trimEnd 1 2 3
        console.log('trimRight' + str1.trimRight())//trimRight 1 2 3
    
  • includes / startsWith / endsWith / repalce

    • includes
      • 语法: 字符串.includes(字符串片段)
      • 作用: 该字符串中是否包含该字符串片段
      • 返回值: 一个布尔值
        • true: 包含
        • false: 不包含
    • startsWith
      • 语法: 字符串.startsWith(字符串片段)
      • 作用: 判断该字符串是否以该字符串片段开头
      • 返回值: 一个布尔值
        • true: 是开头
        • false: 不是开头
    • endsWith
      • 语法: 字符串.endsWith(字符串片段)
      • 作用: 判断该字符串是否以该字符串片段结尾
      • 返回值: 一个布尔值
        • true: 是结尾
        • false: 不是结尾
       var str = 'whyhhhh%^&*iiii'
       console.log('源字符串',str);
       console.log(str.includes('QF001'))//false
       console.log(str.includes('^&*'))//true
    
       console.log(str.startsWith('w'));//true
       console.log(str.startsWith('why'));//true
    
       console.log(str.endsWith('ii'));//true
       console.log(str.endsWith('why'));//false
    
    
    • replace
      • 语法: 字符串.replace('查找的字符串','要替换的内容')
      • 作用: 去字符串中找到一个指定的内容,然后将新的字符串替换旧的
      • 返回值:修改好的字符串
       var str = 'QF001QF001QF001QF001QF001QF001'
       var res = str.replace('QF','***')
       console.log(res)//***001QF001QF001QF001QF001QF001
    

3、案例

1)这个字符串中, XXX 是一个违禁词, 我们需要将 XXX 替换为 **

      1. var str = 'XXX123XXX456XXX'
         这个字符串中, XXX 是一个违禁词, 我们需要将 XXX 替换为 **
         得到的内容: **123**456**
        var str = 'XXX123XXX456XXX'
        for (let i = 0; i < str.length; i++) {
          str = str.replace('XXX','**')
        }
        console.log(str)

        while (str.includes('XXX')) {
            str = str.replace('XXX', '**')
        }
        console.log(str)

2)这个字符串中, XXX YYY ZZZ 全都是违禁词, 我们需要将 他们三个 替换为 **

      2. var str = 'XXX123YYY456ZZZ'
         这个字符串中, XXX YYY ZZZ 全都是违禁词, 我们需要将 他们三个 替换为 **
         得到的内容: **123**456**
        var str = 'XXX123YYY456ZZZ789abc'

        // while (str.includes('XXX')) {
        //     str = str.replace('XXX', '**')
        // }
        // while (str.includes('YYY')) {
        //     str = str.replace('YYY', '**')
        // }
        // while (str.includes('ZZZ')) {
        //     str = str.replace('ZZZ', '**')
        // }

        var arr = ['XXX', 'YYY', 'ZZZ', 'abc', '789']

        arr.forEach(function (item) {
            // console.log(item)
            while (str.includes(item)) {
                str = str.replace(item, '**')
            }
        })

        console.log(str)