如何在JavaScript中将字符串分成三部分

时间:2018-10-28 23:44:11

标签: javascript arrays string

我试图用JavaScript将字符串分成三部分,无论字符串的长度如何。每个部分的长度不必相同。

例如:

AABC:

  • 第1部分:AA
  • 第2部分:B
  • 第3部分:C

AABBC

  • 第1部分:AA
  • 第2部分:BB
  • 第3部分:C

aheuc

  • 第1部分:啊
  • 第2部分:欧盟
  • 第3部分:c

你好世界

  • 第1部分:地狱
  • 第2部分:糟糕
  • 第3部分:rld

2 个答案:

答案 0 :(得分:2)

我相信此功能应该可以实现您的预​​期目标:

function splitStringInThree(string) {
  if (string.length <= 3) return string.split('');
  
  const remainder = string.length % 3;
  const divisor = Math.floor(string.length / 3);
  
  const sep1 = remainder === 2 || remainder === 1 ? 1 : 0;
  const sep2 = remainder === 1 || remainder === 0 ? 0 : 1;
  
  const string1 = string.slice(0, divisor + sep1);
  const string2 = string.slice(divisor + sep1, (divisor * 2) + sep1 + sep2);
  const string3 = string.slice((divisor * 2) + sep1 + sep2);
  
  return [string1, string2, string3];
}

答案 1 :(得分:0)

如果您要做的只是将字符串分成三个块(无论模式或其他内容),那么下面的内容将为您服务。*

function splitChunks(string) {
    var regex = RegExp(".{1,"+Math.ceil(string.length/3)+"}", 'g');
    return string.match(regex);
}

我正在做的是创建一个正则表达式函数,该函数将字符串分成多个块。我要介绍的唯一“魔术”是,我将块长度设置为字符串的长度除以3(如您在regex变量中看到的那样。

* 唯一的问题是,它仅对长度大于5的字符串有效。某些较短长度的字符串不会拆分为3个块,因为没有足够的字符串可以很好地拆分为3块。

输出示例:

> splitChunks("abcdefg");
  (3) ["abc", "def", "g"]

> splitChunks("abcdefghijk");
  (3) ["abcd", "efgh", "ijk"]

> splitChunks("abc");
  (3) ["a", "b", "c"]

> splitChunks("abcd"); // :(
  (2) ["ab", "cd"]