【问题标题】:How does one replace a character at N positions in a string in a cell in Google Sheets如何替换Google表格单元格中字符串中N个位置的字符
【发布时间】:2020-02-09 12:06:50
【问题描述】:

我在单元格 A1 中有一长串字符:

sdfhgt9|ft8yy|1gftre|78hedd

在单元格 A2 中,我有一组逗号分隔的数字来指示替换单元格内字符的位置:

4,10,19,26

这些位置的字符必须用“#”替换,因此输出应如下所示:

sdf#gt9|f#8yy|1gft#e|78he#d

我尝试使用带有数组公式的替换函数。

=ARRAYFORMULA(replace(A1,split(A2,","),1,"#"))

在 A3,A4,A5,A6 中创建这 4 个不同的字符串:

sdf#gt9|ft8yy|1gftre|78hedd 
sdfhgt9|f#8yy|1gftre|78hedd  
sdfhgt9|ft8yy|1gft#e|78hedd 
sdfhgt9|ft8yy|1gftre|78he#d

我现在无法加入并构建一个包含所有 4 个“#”替换的字符串。

我正在考虑使用表格中的常规函数​​来解决这个问题,没有自定义编码。

【问题讨论】:

    标签: google-sheets google-sheets-formula array-formulas regexp-replace gs-vlookup


    【解决方案1】:

    看看这是否有效

    =regexreplace(A1, "^(.{3}).(.{5}).(.{8}).(.{6}).", "$1#$2#$3#$4#")
    

    或者,如果你想使用单元格 A2 的内容

    =join("",ArrayFormula(if(regexmatch(row(indirect("A1:A"&len(A1)))&"", "\b"&SUBSTITUTE(A2, ",", "|")&"\b"), "#", transpose(split(regexreplace(A1, "(.)", "$1-"), "-")))))
    

    【讨论】:

    • 谢谢。这工作得很好。它还帮助我解决了一个相关问题:用标记(“#”)替换单元格中字符串中选定的多个文本实例。
    【解决方案2】:

    你可以在你喜欢的基础上发展:

    =ARRAYFORMULA(JOIN("|", HLOOKUP(COLUMN(A:D), {COLUMN(A:D); 
     SPLIT(TRANSPOSE(REPLACE(A1, SPLIT(A2, ","), 1, "#")), "|")}, 1+COLUMN(A:D))))
    

    或完全动态:

    =ARRAYFORMULA(JOIN("|", HLOOKUP(
     TRANSPOSE(ROW(INDIRECT("A1:A"&COLUMNS(SPLIT(A1, "|"))))), {
     TRANSPOSE(ROW(INDIRECT("A1:A"&COLUMNS(SPLIT(A1, "|"))))); 
     SPLIT(TRANSPOSE(REPLACE(A1, SPLIT(A2, ","), 1, "#")), "|")}, 1+
     TRANSPOSE(ROW(INDIRECT("A1:A"&COLUMNS(SPLIT(A1, "|"))))))))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-02
      • 2015-08-21
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      相关资源
      最近更新 更多