2013-07-08 5 views
5

В моем коде я должен написать, если еще блочноКак проверить строку, имеющие только пробелы в JavaScript

when the variable `currentValue` is holding only spaces -> certain code 

Но я не знаю, как написать это условие currentValue может быть строкой любого размера. Он может содержать " ", " " и т. Д. если я пишу currentValue!=" ", он проверяет одно место.

+0

вы имеете в виду пространства (полукокса 32) точно, или любой пробел (конец строки, табуляция и т.д.) ? – georg

+0

Вероятно, вы должны попробовать Googling для чего-то вроде 'javascript match string'. – 1983

ответ

12

Может выглядеть

if(!currentValue.trim().length) { 
    // only white-spaces 
} 

Документов trim

Даже если его очень понятно; Строка ссылается на currentValue получает trimmed, что в основном означает, что все символы пробела в начале и конце будут удалены. Если вся строка состоит из символов пробела, она очищается все вместе, что в свою очередь означает, что length результата 0 и !0 будет true.

О производительности, я сравнил это решение по сравнению с RegExp путь от @mishik. Как выясняется, .trim() намного быстрее в FireFox, тогда как RegExp выглядит быстрее в Chrome.

http://jsperf.com/regexp-vs-trim-performance

+0

2 downvotes без комментариев, мне очень грустно :( – jAndy

+0

Возможно, это из-за отсутствия поддержки в IE <9, возможно. Кто знает. Это просто для подгонки String.prototype.trim, хотя и даже проще написать комментарий, объясняющий – 1983

+0

это сработало для меня ..спасибо :) –

8

Просто:

if (/^\s*$/.test(your_string)) { 
    // Only spaces 
} 

Чтобы соответствовать space только:

if (/^ *$/.test(your_string)) { 
    // Only spaces 
} 

Объяснение: /^\s*$/ - соответствовать начало строки, то любое количество пробелов (пробел, символ новой строки, табуляции и т.д. ..), затем конец строки. /^ *$/ - то же, но только для пробелов.

Если вы не хотите соответствовать пустой строке: замените * на +, чтобы убедиться, что присутствует хотя бы один символ.

+0

Downvoter, объясните пожалуйста. – mishik

+1

Это также соответствует пустой строке, а также символы новой строки и вкладки. – 1983

+0

True ... обновлен. Я думаю, пустая строка подходит для OP. – mishik

-1

пытаясь угадать:

your_string.split(" ").length 

EDIT:

var your_string = "    "; 
var x = your_string.split(" ").length - 1; 

if (your_string.length > 0 && (your_string.length - x) == 0) { 
    alert("your_string has only spaces"); 
} 
Смежные вопросы