我有一些数据清理任务。我有一个列,从H6开始,再从他们的。该列包含应该在snake_case中的数据,但实际情况并非如此。单元格值的形式为:
- 带 Camel 箱:“ Camel 箱”
- 带空格:“间隔值”
- 有一些初始呼叫上限:ALLCAPSPREFIX_rest
- 以上组合
我知道没有具体的算法可以将所有这些都带到snake_case,但我想提出至少可以将大多数细胞带到snake_case的代码。
我尝试了VBA代码来用下划线替换空格,并获得了下划线的索引。现在我想把下划线后面的所有字符都变成小写。此外,我想替换两个字符的序列:第一个小写,第二个大写,比如lC
到l_c
,因为我不希望CCC
转换为c_c_c
,而是转换为ccc
。但在进一步讨论之前,我想知道是否有更简单的方法。
2条答案
按热度按时间6rvt4ljy1#
这里有一个方法可以实现您想要的功能:
字符串
x1c 0d1x的数据
下面是正则表达式和替换字符串的解释:
Snake_case转换
型
选项:区分大小写;^$换行匹配
([A-Za-z0-9]+)
[A-Za-z0-9]+
+
A-Z
a-z
0-9
(?=[ _A-Z])
[ _A-Z]
_
A-Z
[ _]?
?
(\S+)
\S+
+
$1_$2
$1
_
$2
使用RegexBuddy创建
ffscu2ro2#
罗恩·罗森菲尔德的解决方案对我不起作用。我用这个代替。在论坛https://www.mrexcel.com/board/threads/camelcase-to-proper-case.381040/上取了类似的
字符串