如何替换 Google 表格中单元格中字符串中 N 个位置的字符
How does one replace a character at N positions in a string in a cell in Google Sheets
我的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 个“#”替换的字符串。
我正在考虑使用表格中的常规函数解决这个问题,无需自定义编码。
看看这是否有效
=regexreplace(A1, "^(.{3}).(.{5}).(.{8}).(.{6}).", "####")
或者,如果您想使用单元格 A2 的内容
=join("",ArrayFormula(if(regexmatch(row(indirect("A1:A"&len(A1)))&"", "\b"&SUBSTITUTE(A2, ",", "|")&"\b"), "#", transpose(split(regexreplace(A1, "(.)", "-"), "-")))))
您可以根据自己的喜好进行构建:
=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, "|"))))))))
我的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 个“#”替换的字符串。
我正在考虑使用表格中的常规函数解决这个问题,无需自定义编码。
看看这是否有效
=regexreplace(A1, "^(.{3}).(.{5}).(.{8}).(.{6}).", "####")
或者,如果您想使用单元格 A2 的内容
=join("",ArrayFormula(if(regexmatch(row(indirect("A1:A"&len(A1)))&"", "\b"&SUBSTITUTE(A2, ",", "|")&"\b"), "#", transpose(split(regexreplace(A1, "(.)", "-"), "-")))))
您可以根据自己的喜好进行构建:
=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, "|"))))))))