如何在Google表格公式中将字符串转换为驼峰格式

11
尝试创建一个公式,将由空格分隔的单词字符串转换为驼峰式。

6
只需使用“=PROPER(<单元格>)”即可。 - eddy85br
4个回答

26

更小的版本:

=SUBSTITUTE(PROPER(TRIM(A1))," ","")

我们只需使用PROPER将字母大写,再用TRIMSUBSTITUTE去除空格。

如果我们想要lowerCamelCase,

只需使用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*)","$2")

我的理解是,这应该会更像SomeWordsHere而不是someWordsHere。如果我错了,请纠正我。 - Ryan Schumacher
@Ryan,是的。我认为那是原始的Ⓠ。如果你想要小驼峰式命名法,从这里开始并不难:=REPLACE(SUBSTITUTE(PROPER(TRIM(A3))," ",""), 1,1,LOWER(LEFT(TRIM(A3)))) 这将给出 someWordsHere 的小驼峰式命名法。 - TheMaster
1
没有TRIM的保险措施,这个公式看起来会小得多。 - TheMaster

5

这应该可以工作:

=JOIN("",ArrayFormula(UPPER(LEFT(SPLIT(A3," ")))&LOWER(MID(SPLIT(A3," "),2,500))))

或者更精确地说:
=JOIN("",ArrayFormula(UPPER(LEFT(SPLIT(A3," ")))&LOWER(REGEXEXTRACT(SPLIT(A3," "),".(.*)"))))

4

要完成这个任务,可以使用以下公式(其中A3是单元格)

简而言之:

=IF(IFERROR(FIND(" ",A3)), CONCAT(SUBSTITUTE(LEFT(LOWER(A3), FIND(" ", A3)), " ", ""), SUBSTITUTE(PROPER(SUBSTITUTE(A3, LEFT(A3, FIND(" ", A3)), "")), " ", "")), LOWER(A3))

Annotated:

=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
    )
)

0
从所有答案中汲取灵感,分享我所做的事情,因为没有人以以下确切的方式提到它(转换例如created_at => createdAt)。
=REPLACE(SUBSTITUTE(PROPER(A5), "_", ""), 1, 1, LOWER(LEFT(A5, 1)))

上述公式为:

  • 易懂 => 使用简单易懂的流行函数
  • 正确 => 也适用于空单元格
  • 高效 => 仅对“整个”字符串进行一次解析

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


不确定它与我的答案有何不同。 - TheMaster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接