这是大冰块2021年第2篇原创文章,和大冰块一起在前端领域努力吧!!!


作为JavaScript基础数据类型,字符串具有一些很强大的方法,在平时的工作中用到的地方也特别的多,很多时候因为不熟悉某个字符串的方法,往往走了很多弯路,所以大冰块整理了15个常用又高效的字符串方法,来一起看看这15个提升工作效率的方法吧!

1. 字符串去除首尾空格 —— trim()

说明: 去除字符串两边的空白。

需求场景: 用户搜索前去除输入的首尾空格。

用法: string.trim()

例子:

let str = "    白色不白,黑色不黑,我...我不喜欢你   "
let result = str.trim()
console.log(result); // 控制台打印:"白色不白,黑色不黑,我...我不喜欢你"

2. 字符串替换指定字符(串)—— replace()

说明: 字符串替换字符还是replace()最强大~默认替换第一个符合条件的字符串,也可用正则做全局匹配

需求场景: 字符串的替换,关键词的屏蔽隐藏等

**用法: ** string.replace(searchvalue,newvalue)

例子:

let str = "你知道吗?世界上有60亿人,宇宙有60万亿小行星,你比小行星还要珍贵一万倍"
let result1 = str.replace("亿","个")
let result2 = str.replace(/亿/g,"个")
console.log(result1)  // 控制台打印:"你知道吗?世界上有60个人,宇宙有60万亿小行星,你比小行星还要珍贵一万倍"
console.log(result2)  // 控制台打印:"你知道吗?世界上有60个人,宇宙有60万个小行星,你比小行星还要珍贵一万倍"

3. 字符串合并 —— concat()

说明: 连接两个或更多字符串,并返回新的字符串。(悄悄告诉你,数组也可以使用哦~)

需求场景: 字符串合并展示。

用法: string.concat()

例子:

let str1 = "我有很多好听的情话,"
let str2 = "可面对你都不敢说不出口。"
let result = str1.concat(str2)
console.log(result) // 控制台打印:"我有很多好听的情话,可面对你都不敢说不出口。"

4. 字符串转数组 —— split()

说明: 把字符串通过特定字符分割为字符串数组,split还可以使用正则表达式实现拆分多个分隔符。

需求场景: 字符串转数组进行遍历等操作。

用法1: string.split()

用法2: string.split(/[*]/)

例子:

let str = "张三,李四;王五"
let result1 = str.split(',')
let result2 = str.split(/[,;]/)
console.log(result1) // 控制台打印:["张三", "李四;王五"]
console.log(result2) // 控制台打印:["张三", "李四", "王五"]

5. 字符串转数组 —— […string]

**说明: ** 说起来,这并不是字符串的方法,主要是我觉得ES6语法中的扩展操作符的…语法是转数组最简洁的方法。它和split()区别在于:...语法不根据特定字符切割,而是把每个字符都当作单独的元素添加到数组中。

**需求场景: ** 字符串全部分割成字符数组。

用法: [...string]

例子:

let str = '这是一个字符串string'
let arr = [...str]
console.log(arr) // 控制台打印:["这", "是", "一", "个", "字", "符", "串", "s", "t", "r", "i", "n", "g"]

6. 字符串反转 —— […string].reverse().join("")

说明: 这个也不能算是字符串方法,但是好用。本质上还是转成数组,数组反转之后,再拼接成字符串。

需求场景: 将当前字符串反转输出

用法: [...string].reverse().join("")

例子:

let str = "两极反转,龙卷风摧毁停车场!"
let result = [...str].reverse().join("")
console.log(result) // 控制台打印:!场车停毁摧风卷龙,转反极两

7. 字符串的多次复制 —— repeat ()

说明: 复制字符串指定次数,并将它们连接在一起返回。

需求场景: 字符串需要进行 n 次自动复制。

用法: string.repeat(n)

例子:

let str1 = '复制'
let result = str1.repeat(2)
consol.log(result) // 控制台打印:复制复制let str2 = '10'
let result = str2.repeat(5)
console.log(result) // 控制台打印:1010101010

8. 字符串是否包含某字符 (串)—— search()

**说明:**检索字符串中指定的或与正则表达式相匹配的首个子字符串。如果匹配到了则返回匹配字符串首字符下标,如果没有匹配到,则返回 -1。

需求场景: 字符串内关键字的搜索查询定位。

用法: string.search(searchvalue)

例子:

let str = "今天的夜色很好,月亮也很圆,唯一遗憾的是,我不是从你的窗子里看到的月亮。"
let result1 = str.search("月亮")
let result2 = str.search(/[,。]/)
console.log(result1) // 控制台打印:8
console.log(result2) // 控制台打印:7

9. 字符串内是否包含某字符(串)—— includes()

说明: includes()可选择从某处下标之后开始查找,返回true或false。第二个参数代表从某下标处开始查找,忽略则代表从下标0开始查找。

它和search()区别在于:search()返回指定下标, includes()返回true或false;search()不能从指定下标开始查找, includes()可以从指定下标处开始查找。

需求场景: 判断字符串中是否有不合法字符等

用法: string.includes(searchvalue, start)

例子:

let str = "没有夏日的的凉风,也没有冬日的暖阳,它们只是恰好出现在了合适的时间罢了"
let result1 = str.includes("冬日")
let result2 = str.includes("冬日",20)
console.log(result1); // 控制台打印:true
console.log(result2); // 控制台打印:false

10. 字符串中指定的字符串值在首次或最后一次出现的位置 —— indexOf() 和 lastIndexOf()

说明:

indexOf() 方法可返回某个指定的字符串值首次出现的位置,即从前向后搜索。如果指定第二个参数 start,则在字符串中的指定位置开始从前向后搜索。

lastIndexOf() 方法可返回某个指定的字符串值最后出现的位置,即从后向前搜索。如果指定第二个参数 start,则在字符串中的指定位置从后向前搜索。

需求场景: 关键字首次或最后一次出现的位置

用法1: string.indexOf(searchvalue,start) 指定的字符串值首次出现的位置

用法2: string.lastIndexOf(searchvalue,start) 指定的字符串值最后出现的位置

例子:

let str = "你来人间一趟,你要看看太阳。和你的心上人一起走在街上,了解她,也要了解太阳"
let result1 = str.indexOf("太阳")
let result2 = str.indexOf("太阳",10)  // 从10下标的字符开始查找"太阳",查找范围是"太阳。和你的心上人一起走在街上,了解她,也要了解太阳",下标还是相对原字符串而言的,因此返回11。
let result3 = str.lastIndexOf("太阳")
let result4 = str.lastIndexOf("太阳",10)  // 0-10下标的字符串为"你来人间一趟,你要看看",没有"太阳",返回-1
console.log(result1) // 控制台打印:11
console.log(result2) // 控制台打印:11
console.log(result3) // 控制台打印:35
console.log(result4) // 控制台打印:-1

11. 字符串转大小写 —— toLowerCase() 和 toUpperCase()

说明: 字符串大小写之间的转换

需求场景: 网址,英文名,首字母大写等要求。

用法1: string.toLowerCase() 转成小写字母

用法2: string.toUpperCase() 转成大写字母

例子:

let str = "For you, A thousand times over"
let result1 = str.toLowerCase()
let result2 = str.toUpperCase()
console.log(result1) // 控制台打印:"for you, a thousand times over"
console.log(result2) // 控制台打印:"FOR YOU, A THOUSAND TIMES OVER"

12. 字符串填充到指定长度 —— padStart () 和 padEnd ()

说明: 字符串填充指定字符到指定长度

需求场景: 字符串长度不足,需要补充至指定长度n,如年月日,隐藏手机号,隐藏昵称等。

用法1: string.padStart(n,'补充内容') 从字符串前添加补充内容。

用法2: string.padEnd (n,'补充内容') 从字符串后添加补充内容。

例子:

// 在字符串前补充"-",直到字符串的长度为5
let str1 = '预备开始'
let result = str1.padStart(5, '-')
console.log(result) // 控制台打印:"---预备开始"//在末尾添加"*",直到字符串的长度为11
let str2 = "184"
let result = str2.padEnd(11, "*")
console.log(result) // 控制台打印:"184********"

13. 字符串是否以特定字符(串)开头或结尾 —— startsWith()、endsWith()

说明: 用于检测字符串是否以指定的子字符串开始。如果是以指定的子字符串开头返回 true,否则 false。startsWith()endsWith()方法区分大小写。第二个参数代表从某下标处开始判断是否以特定字符(串)开头或结尾,忽略则startsWith()从下标0开始检测,endsWith()从字符串最后一位下标开始检测。

值得注意的是:

startsWith() 的第二个参数如果超出了当前字符串的最大长度,依旧生效,返回false。

endsWith() 的第二个参数如果超出了当前字符串的最大长度,会不生效,改为从字符串最后一位下标开始检测。

需求场景: 判断字符串是否以指定字符开头或结尾

用法1: string.startsWith(searchvalue, start)

用法2: string.endsWith(searchvalue, start)

例子:

let str = "过去的时候,我们相视一笑,就已过了大半辈子"
let result1 = str.startsWith("过去")
let result2 = str.startsWith("过去",10)
let result3 = str.endsWith("半辈子")
let result4 = str.endsWith("半辈子",20)
console.log(result1); // 控制台打印:true
console.log(result2); // 控制台打印:false
console.log(result3); // 控制台打印:true
console.log(result4); // 控制台打印:false

14. 字符串长度计算 —— length

说明: length属性不仅是数组的属性,同时伪数组,字符串都有length属性。但是遇到某些生僻字如“

《看完就懂系列》15个方法教你玩转字符串相关推荐

  1. 看完就懂系列—动态规划

    前言 动态规划的主要思想 将原问题分解为更简单的子问题(重要的事情默念三遍),通过解决子问题来解决原问题. 记忆化搜索(存储子问题的解,解决重叠子问题多次计算的问题). 动态规划的三要素: 最优子结构 ...

  2. 简单的combineByKey算子【看完就懂系列】

    代码先行: val conf = new SparkConf().setMaster("local").setAppName("CbkDemo")val sc ...

  3. Android _《看完不忘系列》之Retrofit,android面试题及答案2019

    //运行期生成一个实现WanApi接口的类(字节码),并反射创建其实例 WanApi wanApi = retrofit.create(WanApi.class); //得到Retrofit的call ...

  4. 高铁、动车到底啥区别?看完彻底懂了(组图)

    摘自:网易新闻 (原标题:高铁.动车到底啥区别?看完彻底懂了(组图)) 高铁与动车的区别到底在哪里?磁悬浮列车又是什么鬼?今天给你讲讲清楚! 高铁.动车到底啥区别?看完彻底懂了 一.普通列车与高铁钢轨 ...

  5. 华为mate10pro以后能上鸿蒙吗,华为Mate10和Mate10 Pro差别一览 怎么选看完就懂

    华为Mate10和Mate10 Pro差别一览 怎么选看完就懂上周五华为正式发布了今年的两款重磅旗舰Mate10和Mate10 Pro.与上代产品不同,此次Mate10系列的两款产品无论是在外观还是一 ...

  6. 新手入门,数控刀具上的代码怎么认?看完就懂了!

    新手入门,数控刀具上的代码怎么认?看完就懂了! 按照不同的刀具类型对刀具分组: 类别组1 xxyyy(铣刀类): 110 球面铣刀 (圆柱型铣刀,其后的字母y代表铣刀直径,以下略同) 120 立铣刀 ...

  7. java开发用i5还是i7,i7比i5更强!为什么内行人都选i5而不选i7?看完瞬间懂了

    i7比i5更强!为什么内行人都选i5而不选i7?看完瞬间懂了 2020-11-19 11:18:08 4点赞 0收藏 0评论 许多人认为i7比i5更好,那么有什么好呢?让我们先看一下区别. i7使用四 ...

  8. Callable和Runnable的区别(面试常考),看完就懂

    Callable和Runnable的区别(面试常考),看完就懂 Callable 接口 测试类 Runnable 接口 测试类 两者的区别 补充Executor框架 Callable 接口 publi ...

  9. 看完弄懂,明年至少加 5K

    看完弄懂,明年至少加 5K

最新文章

  1. 【青少年编程】【二级】寻找宝石
  2. 学习别跟我谈兴趣 No.88
  3. R语言ggplot2可视化:应用pivot_longer函数将数据从宽格式转换为长格式、为dataframe的每一列绘制密度图和直方图(堆叠)
  4. JAVA中indexOf函数用法
  5. eventbus使用_Android EventBus框架的使用介绍
  6. 查询每个班级排名第三的学生
  7. JAVA程序测试时用到的与内存测试有关的东西
  8. mysql slave 1032_修复mysql slave复制1032错误
  9. PWN-PRACTICE-BUUCTF-15
  10. 2.2.2.进程调度的时机切换与过程、方式
  11. Aix下运行java程序_AIX上部署java项目
  12. 通过消息跨进程发送与接收 TCopyDataStruct 数据 - 回复 skymesh
  13. 电脑分辨率设置工具_打印不求人:我猜你并不会设置“分辨率”!
  14. Android学习笔记---常用技巧(图片的旋转)
  15. 很多次游戏的最后取胜实际上都有很强的偶然性
  16. html中css设置td高度,如何使div填充td高度
  17. MoviePy合成视频没有声音
  18. 【数据结构】---堆排序+TOP-K问题(了解游戏排行底层原理)
  19. 常常反思,让你变成更好的自己
  20. css3 字体自动换行第二行缩进一格

热门文章

  1. bzoj1305【CQOI2009】dance 跳舞
  2. Typora开始收费了,这可咋整?
  3. SDUT 3929 魔戒
  4. 十年时光 离开的谷歌给中国互联网界留下了这些人
  5. hp打印机_smart tank 510 series
  6. Neither shaken nor stirred(DFS理解+vector存图)
  7. 下载W ndows桌面,远程桌面连接Wndows 7常见故障解决方法.doc
  8. VS调试出现错误提示 无法将“obj\Debug\*.*”复制到“bin\Debug\*.*”,文件正在由另一个进程使用,因此该进程无法访问此文件
  9. 什么是Hosts文件以及如何修改Hosts文件
  10. 解决idea ctrl alt + T 打开Surround With里面却没有逻辑语句模板问题