Длина строки, содержащей один пробел, всегда равна 1:
alert('My str length: ' + str.length);
Пробел - это символ, поэтому:
str = " ";
alert('My str length:' + str.length); // My str length: 3
Как отличить пустую строку от строки, содержащей только пробелы? Как определить строку, содержащую только пробелы?
javascript
Лука
источник
источник
0
? Или используйте регулярное выражение для сопоставления только строк с пробелами ...Ответы:
Для этого вы можете использовать регулярное выражение, чтобы удалить все пробелы в строке. Если длина результирующей строки равна
0
, то вы можете быть уверены, что оригинал содержит только пробелы. Попробуй это:var str = " "; if (!str.replace(/\s/g, '').length) { console.log('string only contains whitespace (ie. spaces, tabs or line breaks)'); }
источник
Самым быстрым решением было бы использовать функцию test () прототипа регулярного выражения и искать любой символ, который не является пробелом или разрывом строки
\S
:if (/\S/.test(str)) { // found something other than a space or line break }
Если у вас очень длинная струна, это может иметь большое значение.
источник
Подобно ответу Рори, с ECMA 5 теперь вы можете просто позвонить,
str.trim().length
а не использовать регулярное выражение. Если результирующее значение равно 0, значит, у вас есть строка, содержащая только пробелы.if (!str.trim().length) { console.log('str is empty!'); }
Вы можете узнать больше об обрезке здесь .
источник
if(!str.trim()){ console.log('string is empty or only contains spaces'); }
Удаление пробелов из строки можно выполнить с помощью
String#trim()
.Чтобы проверить, является ли строка нулевой или неопределенной, можно проверить, является ли сама строка ложной, и в этом случае она является нулевой, неопределенной или пустой строкой. Это первая проверка необходима, как попытка вызывать методы
null
илиundefined
приведет к ошибке. Чтобы проверить, содержит ли он только пробелы, можно проверить, является ли строка ложной после обрезки, что означает, что в этой точке это пустая строка.if(!str || !str.trim()){ //str is null, undefined, or contains only spaces }
Это можно упростить с помощью необязательного оператора цепочки .
if(!str?.trim()){ //str is null, undefined, or contains only spaces }
Если вы уверены, что переменная будет строкой, необходима только вторая проверка.
if(!str.trim()){ console.log("str is empty or contains only spaces"); }
источник
Вы можете обрезать значение String, создав функцию обрезки для своих строк.
String.prototype.trim = function () { return this.replace(/^\s*/, "").replace(/\s*$/, ""); }
теперь он будет доступен для каждой вашей строки, и вы можете использовать его как
str.trim().length// Result will be 0
Вы также можете использовать этот метод для удаления пробелов в начале и конце строки, т.е.
" hello ".trim(); // Result will be "hello"
источник
Обрежьте значение String, создав функцию обрезки
var text = " "; if($.trim(text.length == 0){ console.log("Text is empty"); } else { console.log("Text is not empty"); }
источник