2012-04-21 2 views
27

длину строки, которая содержит одно пространство всегда равно 1:Detect строки, которые содержат только пробелы

alert('My str length: ' + str.length); 

Пространство характер, так:

str = " "; 
alert('My str length:' + str.length); // My str length: 3 

Как я могу сделать различие между пустой строкой и строкой, содержащей только пробелы? Как определить строку, содержащую только пробелы?

+0

Обрежьте его и убедитесь, что длина равна нулю. Вы используете jQuery? –

+2

Удалите все пробелы и посмотрите, является ли длина строки '0'? Или используйте регулярное выражение для соответствия только строкам с пробелами ... –

+1

Возможный дубликат [Как проверить, содержит ли поле ввода только пробелы?] (Http://stackoverflow.com/questions/2662245/how-to-check -the-the-input-text-field-contains-only-white-spaces) –

ответ

47

Для этого вы можете использовать регулярное выражение, чтобы удалить все пробелы в строке. Если длина результирующей строки равна 0, вы можете быть уверены, что оригинал содержит только пробелы. Попробуйте это:

var str = " "; 
if (!str.replace(/\s/g, '').length) { 
    // string only contained whitespace (ie. spaces, tabs or line breaks) 
} 

Example fiddle

+0

Ну, строка содержит пробелы. – dwerner

4

Вы можете обрезать строковое значение, создавая декоративную функцию для струнных.

String.prototype.trim = function() { 
    return this.replace(/^\s*/, "").replace(/\s*$/, ""); 
} 

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

str.trim().length// Result will be 0 

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

" hello ".trim(); // Result will be "hello" 
+2

Продвижение прототипов встроенных объектов - плохая идея. – sbichenko

+0

@exizt: что, если он будет использоваться только его собственным кодом? – Shehzad

9

Самое быстрое решение будет использовать регулярное выражение прототипа функции test() и ищет любой символ, который не является пробел или разрыв строки \S:

if (/\S/.test(str)) 
{ 
    // found something other than a space or line break 
} 

В случае, если у вас очень длинная строка, это может существенно повлиять.

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