Come verificare se un elemento dell'array contiene solo nuova linea?
-
06-09-2019 - |
Domanda
Un file di testo semplice fatto di paragrafi e alcune righe vuote viene caricato in un array tramite Ajax. La matrice è suddivisa in elementi di nuove linee, come ad esempio:
var infoArray = new Array();
infoArray = response.split("\n");
La matrice viene sottoposto a un ciclo for, con vari test per parole chiave in vari elementi, che indicano i successivi n elementi vengono trattati in modo particolare. Per lo più gli elementi sono in uscita, come ad esempio
strMsg += '<li>' + infoArray[i] + '</li>';
Il problema è righe vuote dal file di testo vengono salvate anche in elementi di un array. Poi una voce di elenco vuoto ottiene uscita ed è notevolmente più sbagliato.
Hai bisogno di una condizione di test solo per controllare se l'elemento dell'array è vuota o contiene un carattere di nuova riga, non sono sicuro che si applica. Inoltre il server è buggy e, a volte prende un minuto per caricare nuove informazioni in modo a volte non sono sicuro se sto rinfrescante il mio codice più recente o meno.
Alcune delle cose che ho provato:
if (!(infoArray[i].substring(0,0) == '')) { /* process output */ } if (!(infoArray[i].substring(0,1) == '\n')) { /* process output */ } if (!(infoArray[i].substring(0,0) == '\n')) { /* process output */ } if (!(infoArray[i].substring(0,1) == /\n/)) { /* process output */ } if (!(infoArray[i].substring(0,1) == /\n/)) { /* process output */ } if (!(infoArray[i].substring(0,1) == /\n|\s*\n/)) { /* process output */ } if (!(infoArray[i].IsEmpty())) { /* process output */ } var tempString = infoArray[i].toString(); if (!(tempString.IsEmpty())) { /* process output */ } if (tempString.length != 0) { /* process output */ }
idee?
Modifica:. Oh sì Ho anche provato a fare un 'codifica' e 'decodificare' prima di controllare per '\ n' solo per portare fuori
Nessuna soluzione corretta
Altri suggerimenti
Prova taglio la stringa con una regex. Penso che questo è molto popolare (tratto da primo google ha colpito ):
if (!(infoArray[i].replace(/^\s+|\s+$/g, '') == ''))
un'altra serie di funzioni di assetto è possibile utilizzare.
Vorrei suggerire di tagliare solo elemento dell'array. Ad esempio, è possibile utilizzare jQuery:
if (infoArray[i] = $.trim(infoArray[i])) {
strMsg += '<li>' + infoArray[i] + '</li>';
}