2017-04-13 17 views

回答

2

这应该工作:

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

或者更准确地说:

=JOIN("",ArrayFormula(UPPER(LEFT(SPLIT(A3," ")))& LOWER(REGEXEXTRACT(SPLIT(A3," "),".(.*)"))))

+0

不错,我不知道我可以使用'REGEXEXTRACT'。这实际上对我所做的事更好,因为我可以删除非字母数字字符。 –

3

要做到这一点下面的公式作品(其中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 
    ) 
) 
+0

这个答案在非字母字符上没有失败。 –

3

小得多版本:

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

我们只是使用PROPER转为大写,TRIMSUBSTITUTE删除空格。

编辑:

看来OP特别想lowerCamelCase,通过刚刚REPLACE较低的情况下,荷兰国际集团的第一个字符,我们有:

=REPLACE(SUBSTITUTE(PROPER(TRIM(A1))," ",""),1,1,LEFT(LOWER(TRIM(A1)))) 

使用正则表达式:

=REGEXREPLACE(REGEXREPLACE(PROPER(A1),"\s*",""),"^(\w)",LEFT(LOWER(TRIM(A1)))) 
+0

我的理解是,这看起来更像'SomeWordsHere'而不是'someWordsHere'。如我错了请纠正我。 –

+0

@ Ryan,是的。我认为那是最初的Ⓠ。如果你想要更低的骆驼套,从这里开始并不难:'= REPLACE(SUBSTITUTE(PROPER(TRIM(A3)),“”,“”),1,1,LOWER(LEFT(TRIM(A3)))) '这将给'someWordsHere' lowerCamelCase –

+0

如果没有'TRIM'失败,这个公式看起来会小得多。 –

相关问题