如何在 Google 电子表格公式中将字符串转换为驼峰式大小写
How to convert a string to camelcase in Google Spreadsheet formula
正在尝试创建一个公式,将一串由空格分隔的单词转换为驼峰式
为此,以下公式有效(其中 A3
是单元格)
tl;博士:
=IF(IFERROR(FIND(" ",A3)), CONCAT(SUBSTITUTE(LEFT(LOWER(A3), FIND(" ", A3)), " ", ""), SUBSTITUTE(PROPER(SUBSTITUTE(A3, LEFT(A3, FIND(" ", A3)), "")), " ", "")), LOWER(A3))
注释:
=IF( // if a single word
IFERROR( // test if NOT an error
FIND( // looking for a space
" ",
A3
)
),
CONCAT( // concat the first word with the rest
SUBSTITUTE( // remove the space
LEFT( // left of the find
LOWER( // lowercase the string
A3
),
FIND( // find the space in the string
" ",
A3
)
),
" ",
""
),
SUBSTITUTE( // remove spaces
PROPER( // convert string to capitals
SUBSTITUTE( // remove first word
A3,
LEFT( // left of the find
A3,
FIND( // find first space
" ",
A3
)
),
""
)
),
" ",
""
)
),
LOWER( // lowercase rest of the word
A3
)
)
这应该有效:
=JOIN("",ArrayFormula(UPPER(LEFT(SPLIT(A3," ")))&LOWER(MID(SPLIT(A3," "),2,500))))
或者更准确地说:
=JOIN("",ArrayFormula(UPPER(LEFT(SPLIT(A3," ")))&LOWER(REGEXEXTRACT(SPLIT(A3," "),".(.*)"))))
更小的版本:
=SUBSTITUTE(PROPER(TRIM(A1))," ","")
我们只使用 PROPER
来大写,使用 TRIM
和 SUBSTITUTE
来删除空格。
如果我们想要小驼峰式,
通过 REPLACE
将第一个字符小写,我们有:
=REPLACE(SUBSTITUTE(PROPER(TRIM(A1))," ",),1,1,LEFT(LOWER(TRIM(A1))))
使用正则表达式:
=REGEXREPLACE(REGEXREPLACE(PROPER(A1),"\s*",),"^(\w)",LEFT(LOWER(TRIM(A1))))
=LOWER(LEFT(TRIM(A1)))®EXREPLACE(PROPER(TRIM(A1)),"(\w|\s)(\w*)","")
从所有答案中获取线索,分享我所做的,因为没有人以以下确切方式提及它(转换,例如 created_at => createdAt
)
=REPLACE(SUBSTITUTE(PROPER(A5), "_", ""), 1, 1, LOWER(LEFT(A5, 1)))
以上公式为
- 简单 => 使用简单易懂的流行功能
- 正确 => 也适用于空单元格
- 高效 => 只解析 "whole" 字符串一次
大部分工作是使用 PROPER 函数完成的,除了最后一部分将第一个字符替换为小写版本
正在尝试创建一个公式,将一串由空格分隔的单词转换为驼峰式
为此,以下公式有效(其中 A3
是单元格)
tl;博士:
=IF(IFERROR(FIND(" ",A3)), CONCAT(SUBSTITUTE(LEFT(LOWER(A3), FIND(" ", A3)), " ", ""), SUBSTITUTE(PROPER(SUBSTITUTE(A3, LEFT(A3, FIND(" ", A3)), "")), " ", "")), LOWER(A3))
注释:
=IF( // if a single word
IFERROR( // test if NOT an error
FIND( // looking for a space
" ",
A3
)
),
CONCAT( // concat the first word with the rest
SUBSTITUTE( // remove the space
LEFT( // left of the find
LOWER( // lowercase the string
A3
),
FIND( // find the space in the string
" ",
A3
)
),
" ",
""
),
SUBSTITUTE( // remove spaces
PROPER( // convert string to capitals
SUBSTITUTE( // remove first word
A3,
LEFT( // left of the find
A3,
FIND( // find first space
" ",
A3
)
),
""
)
),
" ",
""
)
),
LOWER( // lowercase rest of the word
A3
)
)
这应该有效:
=JOIN("",ArrayFormula(UPPER(LEFT(SPLIT(A3," ")))&LOWER(MID(SPLIT(A3," "),2,500))))
或者更准确地说:
=JOIN("",ArrayFormula(UPPER(LEFT(SPLIT(A3," ")))&LOWER(REGEXEXTRACT(SPLIT(A3," "),".(.*)"))))
更小的版本:
=SUBSTITUTE(PROPER(TRIM(A1))," ","")
我们只使用 PROPER
来大写,使用 TRIM
和 SUBSTITUTE
来删除空格。
如果我们想要小驼峰式,
通过 REPLACE
将第一个字符小写,我们有:
=REPLACE(SUBSTITUTE(PROPER(TRIM(A1))," ",),1,1,LEFT(LOWER(TRIM(A1))))
使用正则表达式:
=REGEXREPLACE(REGEXREPLACE(PROPER(A1),"\s*",),"^(\w)",LEFT(LOWER(TRIM(A1))))
=LOWER(LEFT(TRIM(A1)))®EXREPLACE(PROPER(TRIM(A1)),"(\w|\s)(\w*)","")
从所有答案中获取线索,分享我所做的,因为没有人以以下确切方式提及它(转换,例如 created_at => createdAt
)
=REPLACE(SUBSTITUTE(PROPER(A5), "_", ""), 1, 1, LOWER(LEFT(A5, 1)))
以上公式为
- 简单 => 使用简单易懂的流行功能
- 正确 => 也适用于空单元格
- 高效 => 只解析 "whole" 字符串一次
大部分工作是使用 PROPER 函数完成的,除了最后一部分将第一个字符替换为小写版本