检查空字符串是否在js中失败

时间:2014-08-12 15:30:13

标签: javascript undefined string

将一组词汇表术语拆分为:

lines = text.split(/[\r\n]+/);

然后我遍历数组并解析每个术语以在输出期间正确格式化它们。然而,对空字符串的简单检查已经变得比我想象的更令人头痛。控制台记录为我提供了这个:

...
"Pushing" "dyspnea: Labored or difficult respiration." //correct
"Pushing" ""
...

为了找到这些空字符串我尝试过的事情:

line === ""
line.length == 0
if(line)
isNaN(line.charCodeAt(0))
typeof line == "undefined"

以上列表的各种组合。根据同事的推荐,我检查了输入文本的行结尾,但这一切看起来都很正常。

我确定我只是做了一些真的愚蠢的事情,但是这个解决方案已经躲过了太长时间。任何帮助/建议将不胜感激!

修改 感谢大家的建议。唉,问题仍然存在......

另外,我忘记提及了,但是我在分割后尝试了修剪和替换每行中的空格,但没有提出任何内容。

根据要求,这是更相关的代码。

var text = "";
var end = /\x2E\s\x5B/gm; // ". ["
var lines = [];
var terms = [];

text = document.getElementById("terms").value;
lines = text.split(/[\r\n]+/);
parseText();

function parseText() {
    var i = 0;
    while(i < lines.length) {
        var line = lines[i];
        endIndex = lines[i].search(end);

        if(line != "" || line != " " || line.length != 0 ) {
            parseTerm(lines[i].substring(0, endIndex+1));
        }

        i++;
}

3 个答案:

答案 0 :(得分:2)

如前所述,问题可能是空格,您可以使用trim函数来缩短代码:

if (line.trim() == "") {
    alert("Blank");
}

答案 1 :(得分:0)

也许字符串不是“”,而是“”?

所以不仅要检查零长度,还要检查“空格”

if(st1 == "" || st1 == " " || st1.length == 0 ){
    console.log("find empty")    
}

答案 2 :(得分:0)

事实证明,在我的输入中有一行有两个空格。我不知道为什么这会导致问题,考虑到拆分是专门针对上述模式的,但是替换太多空格的实例解决了这个问题。新行:

text.replace(/\s\s+/g, " ").split(/[\r\n]+/);