我试图用JavaScript将字符串分成三部分,无论字符串的长度如何。每个部分的长度不必相同。
例如:
AABC:
AABBC
aheuc
你好世界
答案 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"]