如何将字符串拆分为单个字符

问题描述 投票:0回答:5

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

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
5个回答
2
投票

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

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

enter image description here


2
投票

中,

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

=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)),"","🍨"),"🍨"))

1
投票

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

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

enter image description here

此公式使用 REGEXREPLACE 在每个字符后面插入一个占位符字符,并通过它进行分割。

ARRAYFORMULA
-
IFERROR
-
SPLIT
-
REGEXREPLACE


1
投票

使用这个公式

只需更改您自己的范围

A2:A
即可。

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

enter image description here

使用删除控制字符“也称为 DEL 或 rubout”,以及 代码 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)))

enter image description here

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


0
投票

您可以添加“命名函数”并利用内置的递归支持。

  • “数据”->“命名函数”->“添加新函数”

  • 设置“函数名称”:例如

    To_CHAR

  • 设置“参数占位符”:例如

    s

  • 设置“公式定义”:

    = IF(
     LEN(s) > 1, 
     VSTACK({LEFT(s)}, TO_CHARS(RIGHT(s, LEN(s) - 1) )),
     s
    )
    
    
  • 使用它:

    = TO_CHARS(A3)

enter image description here


可选:

为了使“命名函数”更通用,请添加第二个参数,该参数接受 LAMBDA 函数进行聚合。为了有多种输出格式:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.