diff options
author | Ognjen Cirkovic <ciraboxkg@gmail.com> | 2022-03-24 14:17:03 +0100 |
---|---|---|
committer | Ognjen Cirkovic <ciraboxkg@gmail.com> | 2022-03-24 14:17:03 +0100 |
commit | 42dcd079b3357b11eb43739949420629f8576f96 (patch) | |
tree | 33cf60a988eb94cdf229ef10230958570dec5e98 /frontend/src/app/_services/csv-parse.service.ts | |
parent | 60b650aa093e937583c2715ca8d048b09b217ec1 (diff) | |
parent | bf8ee0f16710b57cc290c2456846e63a133cc556 (diff) |
Merge branch 'dev' of http://gitlab.pmf.kg.ac.rs/igrannonica/neuronstellar into dev
Diffstat (limited to 'frontend/src/app/_services/csv-parse.service.ts')
-rw-r--r-- | frontend/src/app/_services/csv-parse.service.ts | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/frontend/src/app/_services/csv-parse.service.ts b/frontend/src/app/_services/csv-parse.service.ts new file mode 100644 index 00000000..d53f504e --- /dev/null +++ b/frontend/src/app/_services/csv-parse.service.ts @@ -0,0 +1,53 @@ +import { Injectable } from "@angular/core"; +@Injectable({ providedIn: 'root' }) +export class CsvParseService { + + csvToArray(strData: string, strDelimiter: string): string[][] { + strDelimiter = (strDelimiter || ","); + + let objPattern = new RegExp( + ( + // Delimiters. + "(\\" + strDelimiter + "|\\r?\\n|\\r|^)" + + + // Quoted fields. + "(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" + + + // Standard fields. + "([^\"\\" + strDelimiter + "\\r\\n]*))" + ), + "gi" + ); + + let arrData: string[][] = [[]]; + + let arrMatches = null; + + while (arrMatches = objPattern.exec(strData)) { + + let strMatchedDelimiter = arrMatches[1]; + + if ( + strMatchedDelimiter.length && + strMatchedDelimiter !== strDelimiter + ) { + arrData.push([]); + } + + let strMatchedValue; + + if (arrMatches[2]) { + strMatchedValue = arrMatches[2].replace( + new RegExp("\"\"", "g"), + "\"" + ); + } else { + strMatchedValue = arrMatches[3]; + } + + arrData[arrData.length - 1].push(strMatchedValue); + } + + return (arrData); + } +}
\ No newline at end of file |