0

I am problem with using === to compare string I get whole data from text file and split value line by line with ('\n') like readLine() in java and want to find string "SECTION" but can't find.

when i put

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

no alert! I am sure text file have word "SECTION"

but

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

is work.

any suggestion ? thanks


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");

両方の行は必要ありません。2番目の割り当てが最初の割り当てを上書きするため、次のようになります。

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 に答える