js 如何实现转驼峰处理

news/2024/7/19 13:16:29 标签: 前端, javascript, js

目录

  • 1,需求
  • 2,实现和原理
  • 3,原理
    • 1,正则
    • 2,替换函数

1,需求

在开发中,有时需要将中划线 -,下划线 _,冒号 : 这些连接符转为驼峰形式。

如果只有一个连接符,处理起来没有难度。难点是如何处理多个连接符。

举例:

el-button --> elButton
el-button:group --> elButtonGroup

2,实现和原理

element-ui 源码参考

element-plus 使用的 import { camelCase, upperFirst } from 'lodash'

js">const SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g

const camelCase = function (name) {
  return name.replace(SPECIAL_CHARS_REGEXP, function (_, separator, letter, offset) {
    return offset ? letter.toUpperCase() : letter
  })
}

String.replace MDN 参考

  1. replace 的第1个参数可以是正则表达式。
  2. 第2个参数如果是函数,则会在匹配完成后调用,函数的返回值就是替换后的字符串。

注意:每当第1个参数匹配成功,第2个参数函数就会调用一次,这样就可以处理多个连接符了。
举例:下面的函数会执行3次。

js">const str = '123'
str.replace(/\d/g, function (match) {})

3,原理

1,正则

js">const SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g

总共匹配2个字符,

  1. 匹配中划线 -,下划线 _,冒号 :
  2. 匹配除换行符之外的任何单个字符。

另外注意到有2个捕获括号,捕获到的内容会传递给 replace 的替换函数。

2,替换函数

js">function replacer(match, p1, p2, /* …, */ pN, offset, string, groups) {
  return replacement;
}

el-button 为例,只会匹配1次:
match(匹配的子字符串): -b
p1(第1个捕获组,也就是正则的外层大括号):-b
p2(第2个捕获组):b
offset(原始字符串中匹配子字符串的偏移量,也就是-b 的偏移量):2

后面2个参数用处不大。

再来看下源码,一目了然。

js">const SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g

const camelCase = function (name) {
  // - 是 match,separator 是 p1,letter 是 p2
  return name.replace(SPECIAL_CHARS_REGEXP, function (_, separator, letter, offset) {
    return offset ? letter.toUpperCase() : letter
  })
}

以上。


http://www.niftyadmin.cn/n/5224450.html

相关文章

全球高纯铜靶材总体规模分析:行业现状及发展趋势

高纯铜靶材是指采用纯度在 4N(Cu≥99.99%)以上的金属铜生产的靶材(N 即代表铜的纯度,N 前面的数字越大铜纯度越高)。 高纯铜靶材是一种用于薄膜沉积工艺的材料,具有极高的纯度和特定的物理和化学性质。它通…

SpringBoot : ch12 多模块配置YAML文件

前言 当您使用SpringBoot框架进行项目开发时,通常需要配置一些参数和属性。在实际开发中,可能需要将这些配置参数分成多个不同的YAML文件,并将它们组织到不同的模块中。这样可以方便管理和维护配置文件,并且可以避免配置文件的冲…

9.二维数组——打印出杨辉三角形(要求打印出10行)

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 前言 本系列为二维数组编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 打印出杨辉三角形&#xff08;要求打印出10行&#xff09;。 二、题目分析 三、解题 程序运行代码 #include<s…

人工智能助力医疗:科技护航健康未来

欢迎大家浏览我的博客。YinKais Blog | YinKais Blog 人工智能的魔法不仅仅体现在解决问题、提供建议的方面&#xff0c;更深刻地改变了医疗领域&#xff0c;成为我们健康的科技守护者。本文将聚焦于人工智能在医疗领域的应用&#xff0c;探讨它是如何助力医疗事业&#xff0c;…

Handler系列-IdleHandler

1.IdleHandler是一个interface public final class MessageQueue {public static interface IdleHandler {boolean queueIdle();} } 2.当MessageQueue无Message 如果mIdleHandlers有IdleHandler需要执行&#xff0c;则触发IdleHandler public final class MessageQueue {pr…

怎么样的软件测试工程师才算“大神”?

一个优秀的软件测试工程师不仅需要有深厚的技术知识和经验&#xff0c;还需要有良好的沟通能力、分析能力和问题解决能力。下面是一些具体的特质和技能&#xff1a; 深厚的技术知识和经验&#xff1a;一个优秀的软件测试工程师需要熟悉各种软件测试技术和工具&#xff0c;包括…

运维 | 四层和七层负载均衡介绍

关注: CodingTechWork 负载均衡 负载均衡介绍 概念 负载均衡是建立在现有的网络结构之上&#xff0c;提供一种廉价且透明的方式进行网络设备和服务器带宽的扩展&#xff0c;从而增加吞吐量&#xff0c;加强应用服务的数据处理能力&#xff0c;有效提高网络的灵活性和可用性。…

Python爬虫遇到重定向URL问题时如何解决?

什么是重定向 重定向是指当用户请求一个URL时&#xff0c;服务器返回一个中断请求的URL的响应。这种情况通常发生在网站对URL进行了修改或者重定向到其他页面的情况下。其中&#xff0c;如果处理不当开发&#xff0c;可能会导致爬虫无法获取所需的数据&#xff0c;从而影响爬虫…