2

javascriptを使用してテキストファイルのコンテンツを検証するにはどうすればよいですか?たとえば、私は単一のテキストファイルで構成されています:

6594567890
6594567891
6594567892
6594567893
92345678
92345679
92345680

したがって、特定の条件でコンテンツを検証する必要があります。

  1. プレフィックスが659および9と等しくない場合、拒否されます。
  2. プレフィックスが659に等しいが、長さが10に等しくない場合、それは拒否されます。
  3. プレフィックスが9に等しいが、長さが8に等しくない場合、それは拒否されます。

現在、JSを使用して次のコードを使用しています。

<input type="file" name="txt_list" id="txt_list" class="inpText" size="26" />
<script>
  var input_file = document.getElementById('txt_list');
  input_file.onchange = function() {
    var file = this.files[0];
    var reader = new FileReader();
    reader.onload = function(ev) {
      // Show content  (ev.target === reader)
      alert(ev.target.result);
    };
    reader.readAsText(file);
  };
</script>
<font color="FF0000" style="font-weight:bolder;">
  <b>* Compulsory</b>&nbsp;&nbsp;&nbsp;&nbsp;
</font>

これを行う方法はありますか?jsfiddleまたはサンプルコードを高く評価します。

4

1 に答える 1

3

あなたの関心事である各行を読んでいると思いますか?ev.target.result文字の長いチェーンであるため、文字列に分割する必要があります。線をどのように評価するかは私にははっきりしていなかったので、それを我慢してください

<input type="file" name="txt_list" id="txt_list" class="inpText" size="26" />
<script>
  var input_file = document.getElementById('txt_list');
  input_file.onchange = function() {
    var file = this.files[0];
    var reader = new FileReader();
    reader.onload = function(ev) {
      var str = '';
      for (var i = 0; i < ev.target.result.length; i++) {
        str += ev.target.result[i];
        if (ev.target.result[i] == "\n") { //new line
          //probably very misunderstood evaluation 
          if (((str.substr(4, 7) == '659') && (str.length != 10)) ||
            ((str.substr(4, 7) != '659') && (str.length == 9)) ||
            ((str.substr(4, 5) == '9') && (str.length != 8))) {
            alert('rejected');
          } else {
            alert('accepted');
          }
          //reset the line
          str = '';
        }
      }
    };
    reader.readAsText(file);
  };
</script>
<font color="FF0000" style="font-weight:bolder;">
  <b>* Compulsory</b>&nbsp;&nbsp;&nbsp;&nbsp;</font>

于 2012-10-24T10:23:17.087 に答える