в JavaScript проверить, если значение null или пробелом или без пробела
мне нужно проверить, является ли var нулевым или имеет какие-либо пустые места или, если на то пошло, просто пустым ("")
у меня есть следующие, но не работает:
var addr;
addr = " ";
if (!addr) {
// pull error
}
Если я делаю следующее, он работает
if (addr) {
}
мне нужно что-то вроде этого метода C#:
String.IsNullOrWhiteSpace(value)
Так что если он имеет значение null или имеет какие-либо пробелы или нет места, я могу поймать его
6 ответов:
не-jQuery решение, которое более точно имитирует
IsNullOrWhiteSpace, но для обнаружения null, пустых или все-пробелов только:function isEmptyOrSpaces(str){ return str === null || str.match(/^ *$/) !== null; }...затем:
var addr = ' '; if(isEmptyOrSpaces(addr)){ // error }* EDIT* Обратите внимание, что op конкретно заявляет "мне нужно проверить, является ли var нулевым или имеет какие-либо пустые места или, если на то пошло, просто пустым". Поэтому, хотя да," пустое пространство " охватывает больше, чем null, пробелы или пробел мой ответ предназначен для ответа на конкретный вопрос op. Это важно, потому что op может не хотеть ловить такие вещи, как вкладки, например.
можно использовать
if(addr && (addr = $.trim(addr)))это имеет то преимущество, что фактически удаляет любые внешние пробелы из
addrвместо того чтобы просто игнорируя его при проверке.
if (addr == null || addr.trim() === ''){ //... }A
nullсравнение также будет ловитьundefined. Если вы хотитеfalseчтобы пройти тоже, используйте!addr. Для обратной совместимости браузера свопaddr.trim()на$.trim(addr).
Вы можете создать свой собственный метод эквивалентной
String.IsNullOrWhiteSpace(value)function IsNullOrWhiteSpace( value) { if (value== null) return true; return value.replace(/\s/g, '').length == 0; }
при проверке пробела метод c# использует стандарт Unicode. Пробел включает пробелы, вкладки, возврат каретки и многие другие непечатаемые коды символов. Так что вам лучше использовать:
function isNullOrWhiteSpace(str){ return str == null || str.replace(/\s/g, '').length < 1; }
упрощенная версия выше: (отсюда:https://stackoverflow.com/a/32800728/47226)
function isNullOrWhitespace( input ) { return !input || !input.trim(); }
Comments