gpt4 book ai didi

javascript - 将字符串拆分为定义长度的部分

转载 作者:行者123 更新时间:2023-11-29 16:57:05 25 4
gpt4 key购买 nike

我想将字符串拆分为具有定义长度的部分。这意味着如果我有一个像 "1234567890" 这样的给定字符串,并且想将它分成长度为 3 的部分,那么我希望得到结果 ["123", "456”、“789”、“0”]。为了实现这一点,我在这里找到了一个解决方案:https://stackoverflow.com/a/14349616/2577116

现在,我也想不从开头而是从字符串的末尾开始拆分。预期结果将是 ["1", "234", "567", "890"]

因此我使用并修改了上面的解决方案并提出了这个:

function (str, len, reversed) {
//create array from string
var _parts = str.split(""),
_size = Math.ceil(_parts.length/len),
_ret = [],
_offset;

//should give ["123", "456", "789", "0"]
if (!reversed) {
for (var _i=0; _i<_size; _i++) {
_offset = _i * len;
_ret[_i] = _parts.slice(_offset, _offset+len).join("");
}
}
//should give ["1", "234", "567", "890"]
else {
//reverse input
_parts.reverse();
//apply same algorithm as above but don't join yet
for (var _j=0; _j<_size; _j++) {
_offset = _j * len;
_ret[_j] = _parts.slice(_offset, _offset+len);
}
//bring each subitem back to right order, join
_ret.forEach(function (item, i) {
_ret[i] = item.reverse().join("");
});
//reorder items
_ret.reverse();
}

return _ret;
}

这似乎工作得很好。我要求一些更好/简化的解决方案,因为我的感觉有点笨重。

最佳答案

我会做这样的事情:

    function foo(str,len,rev) {
var result = [];
if (rev && str.length%len != 0) {
result.push(str.substr(0, str.length % len));
str=str.substr(str.length % len);
}

for (var i=0; i<str.length; i+=len) {
result.push(str.substr(i,len));
}
return result;
}

if 语句将首先检查 reversed 是否为真,如果是,它将在将字符串的长度除以 block 大小时计算其余部分(检查 modulo operation % )。然后使用带有起始位置和长度的函数“substr”来获取列表的第一个元素。

for 循环将遍历字符串“len”个字符,并再次使用函数“substr”将字符串切成长度为“len”的片段,并将它们添加到列表结果中。

关于javascript - 将字符串拆分为定义长度的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31452551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com