【问题标题】:How to Split a String Up into Individual Characters如何将字符串拆分为单个字符
【发布时间】:2022-09-27 12:14:47
【问题描述】:

使用数组公式,如何将每个字符分成一个单元格。

Input   Output                                              
cat     c   a   t                                       
dog     d   o   g                                       
horse   h   o   r   s   e                               
tiger   t   i   g   e   r                               

    标签: regex google-sheets lambda split array-formulas


    【解决方案1】:

    我认为这可以通过一个简单的 MID() 公式来完成。

    =ARRAYFORMULA(MID(A2:A,SEQUENCE(1,MAX(LEN(A2:A))),1))
    

    【讨论】:

    • 这里有什么问题see this
    • 我的错误是我错误地复制了一个括号。在编辑中修复。 @Osm
    • 是的,旧的方式:)提高了
    【解决方案2】:

    中,\B 不是一个词boundary。它在字符串之间匹配,其中字符串不包含空格或连字符- 等单词边界。由于SPLIT 不支持正则表达式或\b,我们需要使用正则表达式添加分隔符。

    =ARRAYFORMULA(SPLIT(REGEXREPLACE("cat","\B","?"),"?"))
    

    但是您也可以忽略 \B 并使用空字符串:

    =ARRAYFORMULA(SPLIT(REGEXREPLACE("cat","","?"),"?"))
    

    如果你忽略它,在SPLIT 之前,它看起来像?c?a?t?,而对于\B,它看起来像c?a?t。空字符串匹配[\b\B]

    要将它与数组一起使用,

    =ARRAYFORMULA(SPLIT(REGEXREPLACE(A2:INDEX(A2:A,COUNTA(A2:A)),"","?"),"?"))
    

    【讨论】:

    • 这非常有效,但有一个问题:如果我没有?,它是否有效 ??
    • @Osm 你没有冰淇淋吗?马上去买。没有它就行不通。
    【解决方案3】:

    使用这个公式

    只需使用您自己的更改范围A2:A

    =ArrayFormula(LAMBDA(range, delimiter,
     IF(range="",,SPLIT(REGEXREPLACE(REGEXREPLACE(range&"","(?s)(.{1})","$1"&delimiter),"'","''"),delimiter)))
     (A2:A,CHAR(127)))
    

    使用删除控制字符“也称为 DEL 或 rubout”,与 code 127。作为SPLIT 中的分隔符,用REGEXREPLACE 连接到每个字符:替换"(?s)(.{1})",用"$1"&delimiter

    紧凑的形式

    =ArrayFormula(LAMBDA(r, d,
     IFERROR(SPLIT(REGEXREPLACE(
                   REGEXREPLACE(r&"","(?s)(.{1})","$1"&d),"'","''"),d),""))
     (A2:A,CHAR(127)))
    

    r           Range
    d           Delimiter Char(127)
    (?s)        match the remainder of the pattern with the following 
                effective flags
    
    (.{1})      1st Capturing Group
    .           matches any character
    {1}         matches the previous token exactly one time
    $           asserts position at the end of a line
    

    使用的公式帮助
    ARRAYFORMULA - LAMBDA - IF - SPLIT - REGEXREPLACE - CHAR

    【讨论】:

      【解决方案4】:

      这是另一种可能的解决方案。

      =ArrayFormula(split(regexreplace(A2:A5,"(.)","$1❄️"),"❄️"))
      

      此公式使用 REGEXREPLACE 在每个字符后插入一个占位符字符,并由它拆分。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-08
        • 1970-01-01
        • 1970-01-01
        • 2011-11-02
        • 2017-04-17
        相关资源
        最近更新 更多