当前位置: 首页 > news >正文

ES6 - 字符串新增的一些常用方法

文章目录

      • 0,新增的一些方法
      • 1,includes()、startsWith()、endsWith()
      • 2,repeat()
      • 3,padStart()、padEnd()
      • 4,trimStart()、trimEnd()
      • 5,replaceAll()
      • 6,at()

0,新增的一些方法

介绍一些ES6字符串对象新增的一些常用方法。

方法名描述
includes()返回布尔值,表示是否找到了参数字符串
startsWith()返回布尔值,表示参数字符串是否在原字符串的头部
endsWith()返回布尔值,表示参数字符串是否在原字符串的尾部
repeat()repeat方法返回一个新字符串,表示将原字符串重复n次。
padStart()用于头部补全,第一个参数是补全生效的最大长度,第二个参数是用来补全的字符串
padEnd()用于尾部补全,第一个参数是补全生效的最大长度,第二个参数是用来补全的字符串
trimStart()消除字符串头部的空格
trimEnd()消除尾部的空格
replace()只能替换第一个匹配到的字符
replaceAll()可以一次性替换所有匹配到的字符
at()返回参数指定索引位置的字符,支持负索引(即倒数的位置)

1,includes()、startsWith()、endsWith()

传统上,JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6 又提供了三种新方法;

  • includes():返回布尔值,表示是否找到了参数字符串。
  • startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
  • endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。
      let like = "Eula - Amber";console.log( like.startsWith("Eula"));// trueconsole.log( like.endsWith("Amber")); // trueconsole.log(like.includes("-"));      // true

这三个方法都支持第二个参数,表示开始搜索的位置。

      let like2 = "Kaya"console.log(like2.startsWith("K",0)); // trueconsole.log(like2.endsWith("a",2)); // true 针对前n个字符中查找console.log(like2.endsWith("a",4)); // true 针对前n个字符中查找console.log(like2.includes("y",2)); // true 

上面代码表示,使用第二个参数n时,endsWith的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束。

2,repeat()

repeat方法返回一个新字符串,表示将原字符串重复n次。

      console.log("*".repeat(50));console.log("|==".repeat(18)); console.log("Eula-".repeat(10)); console.log("*".repeat(50));

打印如下:

**************************************************
|==|==|==|==|==|==|==|==|==|==|==|==|==|==|==|==|==|==
Eula-Eula-Eula-Eula-Eula-Eula-Eula-Eula-Eula-Eula-
**************************************************

参数如果是小数,会被取整。

 console.log('xiao'.repeat(2.1));//xiaoxiaoconsole.log('xiao'.repeat(2.9));//xiaoxiao

如果repeat的参数是负数或者Infinity,会报错。

 console.log('xiao'.repeat(Infinity));//Invalid count value: Infinityconsole.log('xiao'.repeat(-1));//  Invalid count value: -1

但是,如果参数是 0 到-1 之间的小数,则等同于 0,这是因为会先进行取整运算。0 到-1 之间的小数,取整以后等于-0repeat视同为 0。

 console.log('xiao'.repeat(-0.9) ); // ""  空串

如果repeat的参数是字符串,则会先转换成数字。

 console.log('xiao'.repeat('aa')); // ""  空串console.log('xiao'.repeat('3') );// xiaoxiaoxiao

3,padStart()、padEnd()

字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。

基本用法:

padStart()padEnd()一共接受两个参数,第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串。

   console.log("x".padStart(2,0));// 0xconsole.log("x".padStart(5,0));// 0000xconsole.log("x".padEnd(2,'0'));// x0console.log("x".padEnd(5,'0'));// x0000

如果用来补全的字符串与原字符串,两者的长度之和超过了最大长度,则会截去超出位数的补全字符串。

'abc'.padStart(10, '0123456789')
// '0123456abc'

如果省略第二个参数,默认使用空格补全长度。

'x'.padStart(4) // '   x'
'x'.padEnd(4) // 'x   '

padStart()的常见用途是日期月份前面补0 ;如下案例:

  let str = new Date();console.log(new Date().toLocaleDateString()); // 2023/8/2let month = (str.getMonth() + 1).toString();console.log(month.padStart(2, "0")); // 08

4,trimStart()、trimEnd()

新增了trimStart()trimEnd()这两个方法。它们的行为与trim()一致,trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。

      const lik3 = "  Eula  ";console.log( lik3.trim());      // 'Eula'console.log( lik3.trimStart()); // 'Eula  'console.log( lik3.trimEnd());   // '   Eula'

上面代码中,trimStart()只消除头部的空格,保留尾部的空格。trimEnd()也是类似行为。

除了空格键,这两个方法对字符串头部(或尾部)的 tab 键、换行符等不可见的空白符号也有效。

5,replaceAll()

之前,字符串的实例方法replace()只能替换第一个匹配。

'aabbcc'.replace('b', '_')
// 'aa_bcc'

上面例子中,replace()只将第一个b替换成了下划线。

如果要替换所有的匹配,不得不使用正则表达式的g修饰符。

'aabbcc'.replace(/b/g, '_')
// 'aa__cc'

正则表达式毕竟不是那么方便和直观,ES6 引入了replaceAll()方法,可以一次性替换所有匹配。

'aabbcc'.replaceAll('b', '_')
// 'aa__cc'

它的用法与replace()相同,返回一个新字符串,不会改变原字符串。

String.prototype.replaceAll(searchValue, replacement)

如果searchValue是一个不带有g修饰符的正则表达式,replaceAll()会报错。这一点跟replace()不同。

// 不报错
'aabbcc'.replace(/b/, '_')// 报错
'aabbcc'.replaceAll(/b/, '_')

上面例子中,/b/不带有g修饰符,会导致replaceAll()报错。

replaceAll()的第二个参数replacement是一个字符串,表示替换的文本,其中可以使用一些特殊字符串。

  • $&:匹配的字符串。
  • $ `:匹配结果前面的文本。
  • $':匹配结果后面的文本。
  • $n:匹配成功的第n组内容,n是从1开始的自然数。这个参数生效的前提是,第一个参数必须是正则表达式。
  • $$:指代美元符号$

下面是一些例子。

// $& 表示匹配的字符串,即`b`本身
// 所以返回结果与原字符串一致
'abbc'.replaceAll('b', '$&')
// 'abbc'// $` 表示匹配结果之前的字符串
// 对于第一个`b`,$` 指代`a`
// 对于第二个`b`,$` 指代`ab`
'abbc'.replaceAll('b', '$`')
// 'aaabc'// $' 表示匹配结果之后的字符串
// 对于第一个`b`,$' 指代`bc`
// 对于第二个`b`,$' 指代`c`
'abbc'.replaceAll('b', `$'`)
// 'abccc'// $1 表示正则表达式的第一个组匹配,指代`ab`
// $2 表示正则表达式的第二个组匹配,指代`bc`
'abbc'.replaceAll(/(ab)(bc)/g, '$2$1')
// 'bcab'// $$ 指代 $
'abc'.replaceAll('b', '$$')
// 'a$c'

replaceAll()的第二个参数replacement除了为字符串,也可以是一个函数,该函数的返回值将替换掉第一个参数searchValue匹配的文本。

'aabbcc'.replaceAll('b', () => '_')
// 'aa__cc'

上面例子中,replaceAll()的第二个参数是一个函数,该函数的返回值会替换掉所有b的匹配。

6,at()

at()方法接受一个整数作为参数,返回参数指定位置的字符,支持负索引(即倒数的位置)。

  const str = "Eula";console.log( str.at(1)); // Econsole.log( str.at(1)); // uconsole.log( str.at(-1));// a

如果参数位置超出了字符串范围,at()返回undefined

  console.log( str.at(10)); // undefined

相关文章:

ES6 - 字符串新增的一些常用方法

文章目录 0,新增的一些方法1,includes()、startsWith()、endsWith()2,repeat()3,padStart()、padEnd()4,trimStart()、trimEnd()5,replaceAll()6,at() 0,新增的一些方法 介绍一些ES6…...

最新SQLMap安装与入门技术

点击星标,即时接收最新推文 本文选自《web安全攻防渗透测试实战指南(第2版)》 五折购买链接:u.jd.com/3ibjeF6 SQLMap详解 SQLMap是一个自动化的SQL注入工具,其主要功能是扫描、发现并利用给定URL的SQL注入漏洞。SQLMa…...

Java 使用 Google Guava 实现接口限流

一、引入依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version> </dependency>二、自定义注解及限流拦截器 自定义注解&#xff1a;Limiter package com.haita…...

帮助中心的价值是什么?怎样才能在线搭建官网网站帮助中心?

帮助中心&#xff08;Help Center&#xff09;是一个提供公司或组织产品或服务相关信息的在线平台。它的价值在于为用户提供便捷的自助服务和解决问题的渠道&#xff0c;同时也能减轻客服人员的负担。 如何在线搭建官网网站帮助中心的步骤 确定需求&#xff1a;在搭建帮助中心…...

Kubernetes——理论基础

Kubernetes——理论基础 一、Kubernetes 概述1.K8S 是什么&#xff1f;2.为什么要用 K8S?3.Kubernetes 主要功能 二、Kubernetes 集群架构与组件三、Master 组件1.Kube-apiserver2.Kube-controller-manager3.Kube-scheduler4.配置存储中心——etcd 四、Node 组件1.Kubelet2.Ku…...

【VUE3】

Vue 3 是当下最流行的前端框架之一&#xff0c;其主要特点是性能更好、体积更小、更易于维护。下面是 Vue 3 的一些重要知识点和代码示例&#xff1a; 创建 Vue 实例 import { createApp } from vueconst app createApp({data() {return {message: Hello, Vue 3!}} })app.mo…...

《金融数据保护治理白皮书》发布(137页)

温馨提示&#xff1a;文末附完整PDF下载链接 导读 目前业界已出台数据保护方面的治理模型&#xff0c;但围绕金融数据保护治理的实践指导等尚不成熟&#xff0c;本课题围绕数据保护治理的金融实践、发展现状&#xff0c;探索和标准化相关能力要求&#xff0c;归纳总结相关建…...

上海亚商投顾:沪指震荡微涨 金融、地产午后大幅走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 三大指数早盘震荡&#xff0c;午后集体拉升反弹&#xff0c;创业板指涨超1%。券商等大金融板块午后再度走强&#…...

Linux文件管理知识:查找文件

前几篇文章一一介绍了LINUX进程管理控制命令及网络层面的知识体系&#xff0c;综所周知&#xff0c;一个linux系统是由很多文件组成的&#xff0c;那么既然有那么多文件&#xff0c;那我们该如何管理这些文件呢&#xff1f; Linux中的所有数据都是以文件形式存在的&#xff0c…...

【TypeScript】安装的坑!

TypeScript安装 安装TypeScript安装时候可能报错这样开头的数据&#xff08;无法枚举容器中的对象&#xff09;——原因&#xff1a;没权限先解决没权限的问题如果发现无法修改-高级-修改继续安装想使用tsc-发现&#xff0c;tsc不能用解决方法&#xff1a;配置环境变量最后的最…...

spring boot 2.x 使用 jpa 映射 json mysql列数据映射乱码

通过下面的依赖&#xff0c;可以将 mysql 的 json 列字段&#xff08;mysql 5.7及以上的版本支持&#xff09;&#xff0c;映射成 Java Bean <dependency><groupId>com.vladmihalcea</groupId><artifactId>hibernate-types-52</artifactId><v…...

创建Helm脚本

一、创建脚本 Helm 是 Kubernetes 的包管理工具&#xff0c;它可以帮助您简化和自动化 Kubernetes 应用程序的部署和管理。使用 Helm&#xff0c;您可以创建和管理称为 Helm Chart 的应用程序打包&#xff0c;这些 Chart 包含了 Kubernetes 资源和配置信息&#xff0c;可以在不…...

2.05 购物车后台刷新并显示

一.用户登录添加商品使用cookie存入购物车&#xff0c;并把购物车商品传入到后台 步骤1&#xff1a;创建购物车BO对象 public class ShopcartBO {private String itemId;private String itemImgUrl;private String itemName;private String specId;private String specName;p…...

2023年第四届“华数杯”数学建模思路 - 案例:异常检测

文章目录 赛题思路一、简介 -- 关于异常检测异常检测监督学习 二、异常检测算法2. 箱线图分析3. 基于距离/密度4. 基于划分思想 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 一、简介 – 关于异常检测 异常…...

inline的盒子设置transform不生效

目录 如何遇到的问题原因为什么会这样怎么解决 如何遇到的问题 最近在开发过程中&#xff0c;因为需要对一个icon进行旋转&#xff0c;而icon本身&#xff0c;是设置span的伪类来进行的&#xff0c;结果我发现无论怎么设置transform都无法使其生效。 span::before {font-famil…...

自然语言处理学习笔记(四)————词典分词

目录 1.中文分词 2.词典分词 &#xff08;1&#xff09;词的定义 &#xff08;2&#xff09;词典性质——齐夫定律 &#xff08;3&#xff09;词典 &#xff08;4&#xff09;加载词典 &#xff08;5&#xff09;hanlp词典路径 1.中文分词 中文分词&#xff1a;指的是将一…...

jsoncpp库和nlohmann-json库实现JSON与字符串类型转换

在ROS中&#xff0c;可以使用jsoncpp库来实现JSON与字符串类型之间的转换。jsoncpp是ROS自带的一个JSON库&#xff0c;它提供了一些函数来解析和生成JSON数据。 下面是一个使用jsoncpp库实现JSON与字符串类型转换的示例代码&#xff1a; #include <ros/ros.h> #include…...

20230803 函数传参引用

定义多输出变量的函数时&#xff0c;通过直接传参数内存地址在函数内部直接修改外部变量的值。需要定义函数时 在输入参数前加 引用符号 & 。 C 值传递、指针传递、引用传递详解...

IDEA SpringBoot项目引入外部jar并打包

1、首先&#xff0c;我们再pom.xml中导入依赖包时&#xff0c;打包可以正常进行。 但如果我们引入了第三方的外部jar包&#xff08;这里需要先把jar包添加到该项目依赖库中&#xff0c;这里不做演示&#xff09;&#xff0c;如图 2、导致打包时报错&#xff0c;程序包不存在或…...

ModaHub魔搭社区——阿里云通义千问宣布开源!70亿参数模型上线魔搭社区,免费可商用

通义千问开源!8月3日,AI模型社区魔搭ModaHub上架两款开源模型Qwen-7B和Qwen-7B-Chat,阿里云确认其为通义千问70亿参数通用模型和对话模型,两款模型均开源、免费、可商用。在多个权威测评中,通义千问7B模型取得了远超国内外同等尺寸模型的效果,成为当下业界最强的中英文7B…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

DAY 26 函数专题1

函数定义与参数知识点回顾&#xff1a;1. 函数的定义2. 变量作用域&#xff1a;局部变量和全局变量3. 函数的参数类型&#xff1a;位置参数、默认参数、不定参数4. 传递参数的手段&#xff1a;关键词参数5 题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一…...