Avatar billede heyn Nybegynder
16. december 2013 - 15:08 Der er 1 løsning

Indlæsning af csv-fil. Hvordan undgår man split på ny linie?

Hej Eksperter

Jeg skal indlæse en csvfil i mit javascript som senere skal placeres i et_array[][].

Jeg indlæser med

fileReader.onload = function(fileLoadedEvent){
  var csv_content = fileLoadedEvent.target.result;
  ...
  ...
}

Det fungerer fint.

I min csv-fil deles pladser med , indhold i felter er omgivet af " og linier angives med ny linie.

"Data","Anden data","Tredje Data"\n"Fjerde data","Femte data","Sjette Data"

Mit problem opstår når jeg skal splitte data op.

I nogle af datafelterne kan der forekomme tekststrenge som indeholder ny linie.

Har nogen et forslag til hvordan skal jeg skrive min regexp således at jeg ikke kommer til at splitte på teksten når jeg skriver

var allLines = csv_content.split(/\r\n|\n/);

Der må kun splittes når ny linie ikke står mellem 2 ".

Venligst Christian
Avatar billede heyn Nybegynder
20. december 2013 - 08:57 #1
Jeg løste selv problemet på følgende måde:

// Først fjernes evt. afsluttende "ny linie"
csv_content = csv_content.trim();

// Array med tekststreng for hver ny linie i csv dokumentet
// opbygges ved at splitte på '"\n' og '"\r\n'.
allTextLines = csv_content.split(/\"\r\n|\"\n/);

// Et multidimentionalt array csvData opbygges. Der splittes på '","'. Foranstående '"' fjernes.
var csvData = {}; 
for (i=0;i<allTextLines.length;i++) {
  var row = allTextLines[i].split(/\",\"/);
  for (var j=0;j<row.length;j++) {
      row[j] = row[j].replace(/"/,"");
      row[j] = row[j].trim();
      if (j==idcol) { id[i-1] = row[idcol].trim(); }
  }
  csvData[row[idcol]] = {};
  for (j=0;j<row.length;j++) {
      csvData[row[idcol]][j] = row[j];
  }
}

Venligst Christian
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester