为 Google Sheet 中的每 X 个字符拆分字符串

Split string for every X number of characters in a Google Sheet

我想通过每 5 个字符拆分一个字符串来将一个单元格值拆分成多行。

示例: 在下面的示例(屏幕截图)中,我们在 A1B1 中有 ABCDEFGHIJKLMNOPQRSTUVWXYZ 我希望拆分字符串在每第 5 个字母之后。

我该怎么做?

function test() {
  let s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  let a = s.split("").slice();
  let d = 0;
  s.split("").forEach((r, i) => {
    if (i > 0 && i % 5 == 0) {
      a.splice(i + d++, 0, '\n');
    }
  });
  Logger.log(a.filter(e => e).flat().join(""));
}

Execution log
8:20:25 PM  Notice  Execution started
8:20:24 PM  Info    ABCDE
FGHIJ
KLMNO
PQRST
UVWXY
Z
8:20:26 PM  Notice  Execution completed

在您的 google-apps-script 标签中,当使用 Google Apps 脚本时,以下示例脚本如何?

示例脚本:

请将以下脚本复制并粘贴到 Google 电子表格的脚本编辑器中并保存脚本。并且,请将 =SAMPLE(A1) 的自定义函数放入单元格。这样,结果值被放入单元格。

function SAMPLE(value) {
  const v = [...value];
  const res = [];
  while (v.length > 0) {
    res.push(v.splice(0, 5).join(""));
  }
  return res.join("\n");
}

或者,例如,如果您想将自定义函数用作 =SAMPLE(A1)=SAMPLE(A1:D5),下面的示例脚本怎么样?

function output_(value) {
  const v = [...value];
  const res = [];
  while (v.length > 0) {
    res.push(v.splice(0, 5).join(""));
  }
  return res.join("\n");
}

function SAMPLE(values) {
  return Array.isArray(values) ? values.map(r => r.map(c => output_(c))) : output_(values);
}

注:

  • 例如,当你使用built-in公式时,下面的公式呢?此公式假设 ABCDEFGHIJKLMNOPQRSTUVWXYZ 的文本到单元格“A1”。请将此公式放入单元格。

      =JOIN(CHAR(10),REGEXEXTRACT(A1,REGEXREPLACE(A1,"(.{0,5})","()")))
    

参考文献: