2013-09-10 4 views
2

В настоящее время я пытаюсь проанализировать файл smil (xml).Проверьте, содержит ли строка только пробелы и n в js/node.js

Самая большая проблема, которая возникает у меня, это если строка не содержит ничего, кроме пробелов и конца строки.

Я пытаюсь:

if(line.trim()==='\n') 
if(line.trim().length<='\n'.length) 

n='\n'; 
if(line.trim()===n) 

Ни один из них не работал. Есть ли способ проверить, нет ли в строке символа 'real'? Или, если строка содержит только \ t, \ n и пробелы?

+1

Ответ заключается не в написании собственного анализатора XML; используйте один из них: http://stackoverflow.com/questions/83405/xml-parser-for-javascript (но если вы действительно хотите научиться писать парсер XML, посмотрите на регулярные выражения для синтаксического анализа текста). –

+1

'\ n' - пробел. см.: [MDN - \ s] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#special-white-space) – dc5

+0

Они предназначены для JQuery, я использую node.js , и не нашел XML-парсер для node.js. Я добавлю, что smil isn t точно xml, но имеет аналогичный синтаксис. – DrakaSAN

ответ

9

читать некоторые учебник по регулярному выражению, а затем попробовать это

if (/^\s*$/.test(line)) console.log('line is blank'); 

/^\s*$/ является регулярное выражение, которое означает

^anchor begin of string 
\s whitespace character class (space, tab, newline) 
* zero or more times 
$ end of string 
+0

Эта работа, я буду принимать, когда смогу. regex кажется полезным, я прочитаю об этом. – DrakaSAN

2

Trim removes all the leading and trailing WHITESPACES. Я думаю, что он также удалит \ n и \ t. Вы должны проверить, чтобы длина строки была равна нулю после ее обрезки. Если длина не равна нулю, строка должна содержать символы, отличные от пробелов.

Как вы упомянули о Node.js. Если обрезка не работает, вы можете реализовать отделку, просто выполнив следующий код:

if (!String.prototype.trim) { 
    String.prototype.trim = function() { 
    return this.replace(/^\s+|\s+$/g, ''); 
    }; 
} 
+0

Trim делает работу (так как это простой javascript), и у вас была хорошая точка о length.trim(). Length, равно 0. – DrakaSAN

0

Я бы попробовал другой подход; найдите типы символов, которые вы используете.

var lineR = line.search(char(34)) //char(34) is carriage return 
if(lineR != null) 
//lineR is your actual position of lineReturn. Do a Substring(0,lineR) then. 
    line = line.Substring(0,lineR) 

В качестве альтернативы, изучите .lastIndexOf(). http://www.w3schools.com/jsref/jsref_lastindexof.asp

Смежные вопросы