提问者:小点点

我试着做“空”字符串检查,但我搞不清楚


由于某种原因,我正试图制作一个自动文件修改脚本,但我被卡在了什么东西上。

我下面有源代码:

const fs = require('fs');
var str = fs.readFileSync("./premaplist.txt");
str = str.toString().split("\n");
var result = "";
str.forEach(s => {
    var addstr = s;
    if(!s.includes("[")) {
        if(s.replace(/[.YBPOKGR#]/g, "") == s)return;
        addstr = "##########";
    }
    result += addstr+'\n';
})
// fs.writeFileSync("./premaplist.txt", result);
console.log(result);

因此,我所期望的结果是让空字符串和包含[的字符串单独存在,并将其他字符串更改为########################***,但它也将空字符串替换为###########****

文本文件是特殊的吗? 还是我做错了或者遗漏了什么?

输入:

[image#1]
.....B....
..BB..BBB.
.BBBBBBB.B
BBBBBBBBB.
##########

[image#2]
GGGG......
GGGGGG....
GGGGGGG...
GGGGGGG...
GGGGGGGG..
GGGGGGGG..
GGGGGGGG..
GGGGGGGGG.
GGGGGGGGG.

[image#3]
.........K

(这样的其实有上千个)

预期产出:

[image#1]
##########
##########
##########
##########
##########

[image#2]
##########
##########
##########
##########
##########
##########
##########
##########
##########

[image#3]
##########

实际输出:

[image#1]
##########
##########
##########
##########
##########
##########
[image#2]
##########
##########
##########
##########
##########
##########
##########
##########
##########
##########
[image#3]
##########

共1个答案

匿名用户

因为您正在执行返回,所以当其为空字符串时,结果中不会添加任何内容,因为您正在执行返回

试着这样做

const fs = require('fs');
var str = fs.readFileSync("./premaplist.txt");
str = str.toString().split("\n");
var result = "";
str.forEach(s => {
    var addstr = s;
    if(!s.includes("[")) {
        addstr = s.replace(/[.YBPOKGR#]/g, "") == s ?"":"##########"
    }
    result += addstr+'\n';
})
// fs.writeFileSync("./premaplist.txt", result);
console.log(result);

住在这里回复。