将单元格值转换为snake_case

2024-01-10

我有一些数据清理任务。我有一个专栏从 H6 开始,然后再往下。该列包含本应位于 Snake_case 中的数据,但事实并非如此。单元格值的形式为:

  • 带驼峰式案例:“CamelCase”
  • 带空格:“间隔值”
  • 有一些初始调用上限:ALLCAPSPREFIX_rest
  • 以上的组合

我知道没有具体的算法可以将所有这些都带到snake_case,但我想提出至少可以将大多数单元格带到snake_case的代码。

我尝试用VBA代码用下划线替换空格并获取下划线的索引。现在我正在考虑将下划线后面的所有字符设为小写。此外,我正在考虑替换两个字符的序列:第一个小写,下一个大写,比如说lC to l_c因为我不想CCC转换为c_c_c,但要ccc。但在进一步讨论之前,我想知道是否可以有更简单的方法。


这是一种可以满足您要求的方法:

Option Explicit
Function Snake_case(s As String) As String
    Dim RE As Object
    Const sPat As String = "([A-Za-z0-9]+)(?=[ _A-Z])[ _]?(\S+)"
    Const sRepl As String = "$1_$2"
    Dim v As Variant

Set RE = CreateObject("vbscript.regexp")
With RE
    .Global = True
    .ignorecase = False
    .Pattern = sPat
    v = Split(.Replace(s, sRepl), "_")
End With

v(0) = WorksheetFunction.Proper(v(0))
v(1) = LCase(v(1))
Snake_case = Join(v, "_")

End Function

这是正则表达式和替换字符串的解释:

蛇形大小写转换

([A-Za-z0-9]+)(?=[ _A-Z])[ _]?(\S+)

选项:区分大小写; ^$ 匹配换行符

  • Match the regex below and capture its match into backreference number 1 https://i.stack.imgur.com/baCrn.png ([A-Za-z0-9]+)
    • Match a single character present in the list below http://www.regular-expressions.info/charclass.html [A-Za-z0-9]+
      • 一次和无限次之间,尽可能多次,根据需要回馈(贪婪) http://www.regular-expressions.info/repeat.html +
      • “A”和“Z”之间的字符 http://www.regular-expressions.info/charclass.html A-Z
      • “a”和“z”之间的字符 http://www.regular-expressions.info/charclass.html a-z
      • 介于“0”和“9”之间的字符 http://www.regular-expressions.info/charclass.html 0-9
  • Assert that the regex below can be matched starting at this position (positive lookahead) http://www.regular-expressions.info/lookaround.html (?=[ _A-Z])
    • Match a single character present in the list below http://www.regular-expressions.info/charclass.html [ _A-Z]
      • 列表“_”中的单个字符 http://www.regular-expressions.info/characters.html _
      • “A”和“Z”之间的字符 http://www.regular-expressions.info/charclass.html A-Z
  • Match a single character from the list “ _” http://www.regular-expressions.info/characters.html [ _]?
    • 零到一次之间,尽可能多的次数,根据需要回馈(贪婪) http://www.regular-expressions.info/optional.html ?
  • Match the regex below and capture its match into backreference number 2 https://i.stack.imgur.com/baCrn.png (\S+)
    • Match a single character that is NOT a “whitespace character” http://www.regular-expressions.info/shorthand.html \S+
      • 一次和无限次之间,尽可能多次,根据需要回馈(贪婪) http://www.regular-expressions.info/repeat.html +

$1_$2

  • 插入捕获组编号 1 最后匹配的文本 http://www.regular-expressions.info/replacebackref.html $1
  • 按字面意思插入字符“_” http://www.regular-expressions.info/characters.html _
  • 插入捕获组编号 2 最后匹配的文本 http://www.regular-expressions.info/replacebackref.html $2

创建于正则表达式好友 http://www.regexbuddy.com/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将单元格值转换为snake_case 的相关文章

  • 替换字符串中的换行符 C#

    如何在 C 中替换字符串中的换行符 使用替换为Environment NewLine myString myString Replace System Environment NewLine replacement text add a l
  • Java:一种将 Mime(内容)类型与 CommonsMultipartFile 中的文件扩展名相匹配的方法

    在我的公司 出于额外原因 我需要将 mime 类型与文件扩展名进行比较 我有一个CommonsMultipartFile 我正在尝试找出进行这种比较的最佳方法 我见过一个MimetypesFileTypeMap 但不确定这是否适用于此 我试
  • C# 使文本框中的一组字符表现得像一个字符

    基本上 我有这样的关键字sin and cos 在文本框中 我希望它的行为像单个字符 当我在下面提到整个字符串时 它指的是字符组 例如 sin Using sin 举个例子 如果插入符号位于此位置 在s 如果你按下del 它将删除整个字符串
  • 需要Python字长函数示例

    我的家庭作业有点困难 我本来应该编写一个函数 limitWords 将输入限制为 20 个单词 如果输入超过 20 个单词 则将输入截断为仅 20 个单词 我使用 len text split 作为计算单词的方法 因此 20 个或更少的部分
  • mod_rewrite 将 '_' 替换为 '-'

    我几乎已经有了 mod rewrite 规则 但我已经屈服了 我需要重写 country countryname php to country countryname 但是 国家 地区名称 可能有这样的下划线 south africa ph
  • 在 Java 中比较字符串的最快方法是什么?

    在Java中比较两个字符串最快的是什么 有比等于更快的东西吗 编辑 我无能为力澄清这个问题 我有两个字符串 它们按字母顺序排序并且大小完全相同 示例 abbcee 和 abcdee 字符串最长可达 30 个字符 我不认为Sun Oracle
  • 替换第二个和第三个下划线之间的任何内容

    我有一个 PowerShell 脚本行 它用 替换 删除 第二个和第三个下划线之间的字符 get childitem pdf rename item newname name replace p L p L 例子 12345 00001 L
  • Python 将字符串组合成尽可能短的字符串?

    如果我有一个字符串列表 我想将它们组合成一个具有重叠字符的字符串 如果没有剩余的重叠字符串 请将其添加到末尾 这是一个过于简化的版本 input one two output twone 我正在寻找一种方法来对输入列表中的任意数量的字符串执
  • 子字符串和 Go 垃圾收集器

    在 Go 中获取字符串的子字符串时 不会分配新的内存 相反 子字符串的底层表示包含一个数据指针 该指针是原始字符串的数据指针的偏移量 这意味着 如果我有一个大字符串并希望跟踪一个小子字符串 则垃圾收集器将无法释放任何大字符串 直到我释放对较
  • SQL 查询结果为字符串(或变量)

    是否可以将SQL查询结果输出到一个字符串或变量中 我的php和mysql不好 假设我有数据库 agents 其中包含列 agent id agent fname agent lname agent dept 使用此查询 sql SELECT
  • 关闭工作簿时删除范围,xls vba

    我想要范围 Range A2 G z 关闭工作簿时删除 有人可以帮我处理代码吗 谢谢 凯 这就是我尝试过的 Option Explicit Sub Makro1 insert clipboard Workbooks Pfl SchutzSt
  • 字符串文字会被编译器优化吗?

    C 编译器或 NET CLR 是否对字符串文字 常量进行了任何巧妙的内存优化 我可以发誓我听说过 字符串内化 的概念 因此在程序中的任何两位代码中 文字 这是一个字符串 实际上会指代同一个对象 大概是安全的 对于字符串来说是这样的 不可变
  • 正则表达式:括号表达式中的双反斜杠

    以下表达式中的双反斜杠匹配什么 它是一个过滤器吗 and 转义反斜杠 或 and 未转义 或 and 逃避问号 这是正则表达式的链接以及一些示例测试字符串 如在Rubular http rubular com r Jrw1G4YLtT Th
  • Python从int到string的快速转换

    我正在用 python 求解大量阶乘 并发现当我完成计算阶乘时 需要相同的时间才能转换为字符串以保存到文件中 我试图找到一种将 int 转换为字符串的快速方法 我将举一个计算和 int 转换时间的例子 我正在使用通用的 a str a 但感
  • 什么正则表达式永远无法匹配?

    Merged https meta stackexchange com questions 158066 what is a merged question with 永远不会与任何内容匹配的正则表达式 questions 1723182
  • 将 NSAttributedString 的子字符串替换为另一个 NSAttributedString

    我想替换一个子字符串 例如 replace of an NSAttributedString和另外一个NSAttributedString 我正在寻找一种等效的方法NSString s stringByReplacingOccurrence
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • 使用正则表达式查找除一个字符串之外的所有字符串[重复]

    这个问题在这里已经有答案了 我想匹配除字符串之外的所有字符串 ABC 例子 A gt Match F gt Match AABC gt Match ABCC gt Match CBA gt Match ABC gt No match 我尝试
  • 为什么 JavaScript 中是 [1,2] + [3,4] = "1,23,4" ?

    我想将一个数组的元素添加到另一个数组中 所以我尝试了以下方法 1 2 3 4 它的回应是 1 23 4 到底是怎么回事 The 操作员没有为数组定义 发生的事情是 JavaScript将数组转换为字符串并将它们连接起来 Update 由于这
  • 正则表达式仅允许特定数字

    我正在寻找一个只允许输入特定数字的正则表达式 例如2 4 5 6 10 18 我尝试过类似的东西 2 4 5 6 10 18 我输入的任何内容都无法通过正则表达式 然后计算机用手指着我并大笑 我哪里出错了 单引号是不必要的 您正在寻找的正则

随机推荐

  • 如何查找DLL文件的API函数?

    有没有办法获得所有API 导出 函数从一个DLL file 我知道诸如此类的程序Depends and 体育探索者可以做到这一点 但他们都没有检索参数列表 除非导出的函数类似于 COM DLL 或具有修改功能的 C 否则根本无法提供参数的信
  • 生成给定范围内的随机时间戳?

    我正在尝试做类似的事情 start input select starting date format example Jan 01 00 00 00 end input select ending date if start gt end
  • 致命异常:java.lang.NoClassDefFoundError com.google.android.gms.internal.firebase-perf.zzw

    应用程序启动时出现此错误 致命异常 java lang NoClassDefFoundError com google android gms internal firebase perf zzw 在 com google firebase
  • 从图像中识别井字游戏板的状态

    我正在开发一个项目 我必须在java中使用openCV来识别井字游戏板的状态 请参阅下面的示例程序执行 input Output X O X 我试图通过查找图像中的轮廓来解决此问题 但问题是未标记的空框也被捕获 并且我无法使用多边形大小和轮
  • 以编程方式删除 ViewPager,何时(或如何确保)包含的片段被销毁?

    事先搜索过这个问题 我可以找到很多关于动态添加和删除所选内容的讨论Fragments 来自 aViewPager 然而 我在这里真正关心的是如何以编程方式删除整个ViewPager 干净地 从其包含ViewGroup 当那个ViewPage
  • MySql 中的大表和分析

    对于我的初创公司 我自己跟踪一切 而不是依赖谷歌分析 这很好 因为我实际上可以拥有 ips 和用户 id 以及一切 这种方法一直运行良好 直到我的跟踪表增加了大约 200 万行 该表称为acts 并记录 ip url note 帐户ID 如
  • 防止后退按钮关闭对话框

    我试图阻止在 Android 中按后退按钮时关闭 AlertDialog 框 我遵循了两种流行的方法在这个线程中 https stackoverflow com questions 4779954 disable back button i
  • 刷新/重新查询组合框问题

    下午 当我的组合框所在的表单打开时 我在更新组合框时遇到问题 我的数据在表单打开时发生变化 因此需要刷新组合框 但我不知道如何刷新 似乎唯一的方法是关闭然后重新打开表单 但我不知道 ComboBox 的原始源是一个简单的选择查询 我尝试过使
  • Sonar 要求“使用 try-with-resources 或在“finally”子句中关闭此“连接”。”

    我想要一个干净的项目 所以我使用声纳来检测潜在的缺陷 在以下方法中 声纳要求 Use try with resources or close this Connection in a finally clause private Conne
  • attributeError:无法使用flask-SQLAlchemy设置属性[重复]

    这个问题在这里已经有答案了 我正在使用 Flask SQLAlchemy 版本 2 1 它安装 sqlalchemy 版本 1 x 我的下面的代码首先获取结果集数组 然后循环修改以前可以工作但现在不行的现有属性 question topic
  • Android游戏:一次将一组图像中的一个图像拖动到屏幕中

    我的屏幕底部堆叠了 5 张图像 我的游戏的目标是拖动这些图像并在某些条件下将它们连接起来 有点像拼图游戏 我使用了以下代码 var touchListener new CCEventListenerTouchAllAtOnce touchL
  • 从 Mercurial prechangegroup 挂钩读取命令行参数

    如果某个条件成立 我试图禁止推送到 Mercurial 存储库 然而 它是基本的如果用户使用push force 无论如何 推送都会进行 我知道在进行推送的机器上使用以下命令很容易做到这一点pre push钩子 它将命令行参数传递给钩子 然
  • 如何在 Mac OS X 默认终端上禁用“括号粘贴模式”中的奇怪字符?

    我的终端遇到问题 当我粘贴文本时 它的前缀为00 并带有后缀01 例如 我将突出显示文本并推送Command C 然后我推Command V进入终端 我看到那些奇怪的字符在文本的开头和结尾弹出 例如 我可以突出显示text并将其粘贴到终端中
  • 微服务与单体架构[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 微服务和单体架构各有哪些优缺点 什么时候选择微服务架构还是单体架构 这是一个非常重要的问题 因为有些人被围绕微服务的所有讨论所吸引 并
  • 每个li有不同的列表样式图像

    我的一些 ul 和 li 有问题 我想创建一个包含 3 li 的无序列表 每个 li 都有不同的列表样式图像 我写了这段代码 但图像没有出现 你能帮助我吗 谢谢 编辑 使用 HTML 代码更新帖子 div ul li Some text h
  • Selenium::WebDriver::Error::JavascriptError:等待评估.js 加载失败 Firefox 23

    今天运行我的 rspec 测试 只要测试中的某个地方有 page execute script 调用 我就会收到以下错误 Selenium WebDriver Error JavascriptError waiting for evalua
  • 用一种颜色绘制多列的 pandas 数据框

    我有一个如下所示的数据框 A B datetime 2020 01 01 00 00 00 10 622 30 2020 01 01 01 00 00 16 397 30 2020 01 01 02 00 00 24 190 30 2020
  • 如何在 Swift 中使用 sizeThatFits?

    我有一个文本视图和这样的视图 let lb UITextView let view UIView background img view addSubview about txt lb没有固定的高度 可以是30或300px 我该如何使用si
  • 如何在 Android 中打开新屏幕?

    我是 android 新手 在验证登录后我创建了一个登录页面 我根据用户身份验证得到正确或错误的结果现在我的目标是使用一些新的文本框和按钮在成功身份验证时显示另一个屏幕我的意思是新布局如何实现这一点 任何帮助 将不胜感激 你想要开始新活动
  • 将单元格值转换为snake_case

    我有一些数据清理任务 我有一个专栏从 H6 开始 然后再往下 该列包含本应位于 Snake case 中的数据 但事实并非如此 单元格值的形式为 带驼峰式案例 CamelCase 带空格 间隔值 有一些初始调用上限 ALLCAPSPREFI