2017-07-26 9 views
0

顧客データ(たとえばcompanyName)をランダムに選択した名前で置き換えるスクリプトを作成しようとしています。私の問題は、CSVファイル(3行目)に列データの中に改行があることです。CSV書式destorys my顧客データを置き換えるアルゴリズム

( "ログイン:#ブレイク##ブレイク#ユーザー名#ブレイク#メール#ブレイク#パスワート:******* ** ")。

私の例CSV-ファイルはこのような何か(私はそれを省略し、顧客データを交換しました)になります。私はすべてが壊れた後、アレイは、後にすべての値を取得することを書いた私のスクリプトでは

"607";"2017-07-10 16:28:32";"2017-07-10 16:28:32";"686";"companyName";"street";"PLZ";"CITY";"";"0";"";"1";"N";"F";"customer";"0";"4";"7";"1";"z";"d";"d";"d";"d";"d";"0";"Y";"0";"75";"0";"0" 
"608";"2017-07-10 16:28:32";"2017-07-10 16:28:32";"687";"companyName";"street";"PLZ";"CITY";"";"0";"";"1";"N";F";"customer";"0";"5";"12";"1";"z";"Y";"d";"d";"d";"d";"0";"Y";"0";"75";"0";"0" 
"609";"2017-07-10 16:28:32";"2017-07-10 16:28:32";"688";"companyName";"Street";"PLZ";"City";"";"0";"Login: 

USERNAME 
EMAIL 
Passwort: *******************";"0";"N";"";"";"0";"299";"170";"0";"k";"Y";"d";"d";"d";"d";"0";"";"0";"0";"0";"0" 
"610";"2017-07-10 16:28:32";"2017-07-10 16:28:32";"689";"companyName";"Street";"PLZ";"City";"";"0";"";"0";"N";"";"customer";"0";"9";"12";"0";"k";"d";"d";"d";"d";"d";"0";"";"0";"0";"0";"0" 
"611";"2017-07-10 16:28:32";"2017-07-10 16:28:32";"690";"companyName";"Street";"PLZ";"City";"";"0";"";"0";"N";"";"customer";"0";"24";"21";"0";"k";"Y";"d";"d";"d";"d";"0";"";"0";"0";"0";"0" ' 

を最後の休憩と次の休憩の前に。よりよく理解するために

:アレイは、第1のループパスの後に次のようになります。

"607";"2017-07-10 16:28:32";"2017-07-10 16:28:32";"686";"companyName";"Street";"PLZ";"City";"";"0";"";"1";"N";"";"customer";"0";"4";"7";"1";"z";"d";"d";"d";"d";"d";"0";"Y";"0";"75";"0";"0"" 

アレイは、31の大きさを持っていますが、CSV-ファイルのID「609」は、私が」実行されます

"609";"2017-07-10 16:28:32";"2017-07-10 16:28:32";"688";"companyName";"Street";"PLZ";"City";"";"0";"Login: 

私のアルゴリズム全体が壊れてしまいます。ここで

は私のアップロード機能である:

function Upload() { 
     var vorname = []; // actually 1000 first names 
     var nachname = []; // acutally 1000 surnames 
     var cells; 
     var strWholeFile = ""; 
     var lineToReplace = 4; 
     var counter; 
     var fileUpload = document.getElementById("fileUpload"); 
     var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.txt)$/; 
     if (regex.test(fileUpload.value.toLowerCase())) { 
      if (typeof (FileReader) != "undefined") { 
       var reader = new FileReader(); 

       /* Reader.onload function */ 
       reader.onload = function (e) { 
        var rows = e.target.result.split("\n"); 
        rows.length = rows.length - 1; 
        console.log(strWholeFile); 

        /** For every "return" the loop will 
        * be executed once **/ 
        for (var i = 0; i < rows.length; i++) { 

         if (i == 0) { 
          cells = rows[i].split(";"); 
          counter = cells.length; 
         } 
         else { 
          cells = rows[i].split(";"); 
         } 

         if (cells.length == counter && i != 0) { 
          cells[lineToReplace] = "\"" + vorname[getRandom(0, 999)] + " " + nachname[getRandom(0, 999)] + "\""; 
         } 

         console.log(strWholeFile); 

         /** For every column the loop will 
         * be executed once **/ 
         for (var j = 0; j < cells.length; j++) { 
          strWholeFile += cells[j] + ";"; 
          console.log(strWholeFile); 
         } 
         if (cells.length == counter) { 
          strWholeFile += "\n"; 
          console.log(strWholeFile); 
         } 
        } 
       }; 
       reader.readAsText(fileUpload.files[0]); 
      } 
      else { 
       alert("Dieser Webbrowser unterstützt kein HTML5."); 
      } 
     } 
     else { 
      alert("Bitte wählen Sie einen gültige CSV-Datei aus."); 
     } 
    } 

はあなたのいずれかが、私は私の問題を解決することができる方法のスマートそれでもシンプルなアイデアを持っていますか?私は1ヶ月以来Javascriptを学んでいるので、良いJavaScript(私は生の募集ではない)を知らない。

ありがとうございました!

+0

は、行が同じ列に常にログインに壊れるか、任意の列でできていますか? – Myonara

+0

これはすべての列にある可能性があります...問題点 – Nicolai

+0

それでは、行番号、列番号などのステータス変数に引用符( "")などの文字変数を持つcharアルゴリズムを設定できます。最後の列と文字列の終わりの前に改行が来ると、改行を文字列の一部として読み取ることができます。 – Myonara

答えて

1

私は、CSV-ファイルの行のすべての終わりは次のようになり

var rows = e.target.result.split("\"\n"); 

にライン

var rows = e.target.result.split("\n"); 

を変更:

"data"#BREAK 

ので、代わりのクエリちょうど休憩I引用符と括弧を照会する

行の

例の終了:データ内の

"data"#Break 

例ブレーク:

"Login#BREAK 

Email[...]" 
関連する問題