Как проверить, содержит ли элемент массива только новую строку? - PullRequest
1 голос
/ 01 июня 2009

Простой текстовый файл, состоящий из абзацев и нескольких пустых строк, загружается в массив через Ajax. Массив разбит на элементы новыми строками, такими как:

var infoArray = new Array();
infoArray = response.split("\n");

Затем массив помещается в цикл for с различными проверками ключевых слов в различных элементах, которые указывают, что следующие n-элементы обрабатываются определенным образом. В основном выводятся элементы, такие как

    strMsg += '<li>' + infoArray[i] + '</li>';

Проблема в том, что пустые строки из текстового файла также сохраняются в элементах массива. Затем выводится пустой элемент списка и он явно ошибочен.

Требуется условие проверки, чтобы проверить, является ли элемент массива пустым или содержит символ новой строки, я не уверен, что применимо. Кроме того, сервер глючит, и иногда для загрузки новой информации требуется минута, поэтому я иногда не уверен, обновляю ли я свой самый последний код или нет.

Некоторые вещи, которые я пробовал:


    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 */ }

Идеи

Редактировать: о да, я также попытался выполнить 'кодирование' и 'декодирование', прежде чем проверять наличие '\ n', просто чтобы вывести его.

Ответы [ 2 ]

1 голос
/ 01 июня 2009

Попробуйте обрезать строку с помощью RegEx. Я думаю, что это популярно (взято из первый гугл хит ):

if (!(infoArray[i].replace(/^\s+|\s+$/g, '') == ''))

WebKit публикует другой набор функций обрезки , который вы можете использовать.

0 голосов
/ 01 июня 2009

Я бы предложил просто обрезать элемент массива. Например, вы можете использовать jQuery:

if (infoArray[i] = $.trim(infoArray[i])) {
    strMsg += '<li>' + infoArray[i] + '</li>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...