如何使用javascript对字符串进行分块
我有一个大于32kb的字符串,它需要分块,每个分块的大小限制为32kb。可能吗?使用JavaScript,我只能找到与我的任务无关的代码,比如剪切字符串或拆分字符串如何使用javascript对字符串进行分块,javascript,Javascript,我有一个大于32kb的字符串,它需要分块,每个分块的大小限制为32kb。可能吗?使用JavaScript,我只能找到与我的任务无关的代码,比如剪切字符串或拆分字符串 stringChop = function(str, size){ if (str == null) return []; str = String(str); return size > 0 ? str.match(new RegExp('.{1,' + size + '}', 'g')) : [str]; } 我还有检查
stringChop = function(str, size){
if (str == null)
return [];
str = String(str);
return size > 0 ? str.match(new RegExp('.{1,' + size + '}', 'g')) : [str];
}
我还有检查字节的代码
const byteSize = str => new Blob([str]).size;
const result = byteSize("sample")
您确实不想“花时间”在节点中拆分大字符串
如果你要用香草的话
使用JavaScript完全可以做到这一点(您已经非常接近了)。尽管这在没有正则表达式和生成器的情况下更加优雅:
function*chunk(str,size=3){
对于(设i=0;i
如果可以使用Node.js
我会用createReadStream
读取要拆分的文件,然后在达到限制时将其写入不同的文件。由于您不需要创建许多小字符串或将所有数据保留在内存中,因此这会更加有效:
(async () => {
let currentFileIndex = 0, currentBytes = 0;
let currentFile = fs.createWriteStream(`${currentFileIndex}.csv`);
for await(const chunk of fs.createReadStream('input.csv') {
currentBytes += chunk.length;
if (currentBytes > 32000) { // or whatever limit you want
currentFile.end(); // probably wait for the allback here
currentBytes = 0;
currentFile = fs.createWriteStream(`${++currentFileIndex}.csv`)
}
await util.promisify(cb => currentFile.write(chunk, cb)();
}
})();
您确实不想“花时间”在节点中拆分大字符串
如果你要用香草的话
使用JavaScript完全可以做到这一点(您已经非常接近了)。尽管这在没有正则表达式和生成器的情况下更加优雅:
function*chunk(str,size=3){
对于(设i=0;i
如果可以使用Node.js
我会用createReadStream
读取要拆分的文件,然后在达到限制时将其写入不同的文件。由于您不需要创建许多小字符串或将所有数据保留在内存中,因此这会更加有效:
(async () => {
let currentFileIndex = 0, currentBytes = 0;
let currentFile = fs.createWriteStream(`${currentFileIndex}.csv`);
for await(const chunk of fs.createReadStream('input.csv') {
currentBytes += chunk.length;
if (currentBytes > 32000) { // or whatever limit you want
currentFile.end(); // probably wait for the allback here
currentBytes = 0;
currentFile = fs.createWriteStream(`${++currentFileIndex}.csv`)
}
await util.promisify(cb => currentFile.write(chunk, cb)();
}
})();
如果使用Node.js执行此操作,只需逐行读取输入文件,将这些动态块存储到缓冲区字符串中,一旦缓冲区大小达到限制,将其推到单独的文件中。@YevgenGorbunkov所以使用javascript不会起作用吗?我使用java从image base64 encode中获取字符串,然后将其发送到javascriptHere您将找到一些答案,在这里,如果您使用Node.js这样做,只需逐行读取输入文件,将这些动态块存储到缓冲区字符串中,一旦缓冲区的大小达到限制,将它推到单独的文件中。@YevgenGorbunkov那么使用javascript就不会起作用了?我使用java从image base64 encode中获取字符串,然后将其发送到javascriptHere,您将在这里找到一些答案,