0

我在使用 === 比较字符串时遇到问题 我从文本文件中获取整个数据并使用 ('\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);
        }
    }
}
4

1 回答 1

2

您的代码中有一些奇怪之处,但是:

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 */
于 2012-11-01T06:26:00.270 回答