如何在 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 来大写,使用 TRIMSUBSTITUTE 来删除空格。

如果我们想要小驼峰式,

通过 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)))&REGEXREPLACE(PROPER(TRIM(A1)),"(\w|\s)(\w*)","")

从所有答案中获取线索,分享我所做的,因为没有人以以下确切方式提及它(转换,例如 created_at => createdAt

=REPLACE(SUBSTITUTE(PROPER(A5), "_", ""), 1, 1, LOWER(LEFT(A5, 1)))

以上公式为

  • 简单 => 使用简单易懂的流行功能
  • 正确 => 也适用于空单元格
  • 高效 => 只解析 "whole" 字符串一次

大部分工作是使用 PROPER 函数完成的,除了最后一部分将第一个字符替换为小写版本