无法比较javascript中文本文件的值

时间:2012-11-01 05:33:52

标签: javascript html filereader

我使用===来比较字符串是个问题 我从文本文件中获取整个数据并逐行分割值('\ n') 喜欢java中的readLine() 并希望找到字符串“SECTION”但找不到。

当我把

if(contents[i] === "SECTION") {
    alert("This is section");
}

没有警报!我确信文本文件有“SECTION”字样

但是

if (contents[i].match("SECTION)) 

是工作。

有什么建议吗?感谢

<小时/> javascript

function readFile (evt) {
var files = evt.target.files;
    if (files) {
        for (var i=0, f; f=files[i]; i++) {
            var file = files[i];           
            var reader = new FileReader();
            reader.onload = function() { 
                var contents = [];
                contents = this.result.split("\n");
                    for (var i = 0; i < contents.length; i++) {
                        if(contents[i] === "SECTION") {
                            alert("This is section");
                        }
                        document.getElementById('textArea').innerHTML +=contents[i];
                    }
            }
            reader.readAsText(file);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您的代码有点奇怪,但是:

var contents = [];
contents = this.result.split("\n");

不需要两个行,第二个赋值会覆盖第一个,所以:

var contents = this.result.split("\n");

for (var i = 0; i < contents.length; i++) {
    if(contents[i] === "SECTION") {

此处不需要===,但我认为它没有受到伤害。可能是比较文本周围有空格,因此您可以考虑删除空格或使用正则表达式,例如:

var re = /^\s*SECTION\s*$/;

将单词“SECTION”与之前和之后的任意数量的空格匹配。如果您只想要一个包含字符序列SECTION的行,那么:

var re = /\s*SECTION\s*/;

并忽略大小写:

var re = /\s*SECTION\s*/i;

不管。然后使用test方法,如:

for  ( ... ) {
    if (re.test(contents[i])) {
       /* found a section */