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>';
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top