如何检查一个变量是空或空字符串或 JavaScript 中的所有空格?

我需要检查一个变量是否为空,或者是否有所有的空格,或者是否为空(“”)。

我有以下方法,但是不管用:

var addr;
addr = "  ";


if (!addr) {
// pull error
}

如果我这样做,它的工作:

if (addr) {


}​

我需要的是类似于 C # 方法 String.IsNullOrWhiteSpace(value)的东西。

157678 次浏览

你可以使用 if(addr && (addr = $.trim(addr)))

这样做的好处是,实际上可以从 addr中删除任何外部空格,而不是在执行检查时忽略它。

参考资料: http://api.jquery.com/jQuery.trim/

if (addr == null || addr.trim() === ''){
//...
}

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;
}

非 jQuery 解决方案更接近于模仿 IsNullOrWhiteSpace,但只检测 null、空或全空:

function isEmptyOrSpaces(str){
return str === null || str.match(/^ *$/) !== null;
}

然后:

var addr = '  ';


if(isEmptyOrSpaces(addr)){
// error
}

请注意,行动特别指出:

我需要检查一下 是空的,或者有任何空格,或者仅仅是空的变量。

因此,虽然是的,“空白”包含超过空,空格或空白我的回答是为了回答操作的具体问题。这一点很重要,因为 op 可能不想捕捉诸如制表符之类的东西。

在检查空白时,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();
}

试试这个

/**
* Checks the string if undefined, null, not typeof string, empty or space(s)
* @param {any} str string to be evaluated
* @returns {boolean} the evaluated result
*/
function isStringNullOrWhiteSpace(str) {
return str === undefined || str === null
|| typeof str !== 'string'
|| str.match(/^ *$/) !== null;
}

你可以像这样使用它

isStringNullOrWhiteSpace('Your String');
isEmptyOrSpaces(str){
return str === null || str.trim().length>0;
}
function isEmptyOrSpaces(str){
return str === null || str.match(/^[\s\n\r]*$/) !== null;
}
isEmptyOrSpaces(str){
return !str || str.trim() === '';
}

你可以试试这个:

do {
var op = prompt("please input operatot \n you most select one of * - / *  ")
} while (typeof op == "object" || op == "");
// execute block of code when click on cancle or ok whthout input

老问题了,但我觉得应该有个更简单的答案。

你可以简单地做:

var addr = "  ";


if (addr && addr.trim()) {


console.log("I'm not null, nor undefined, nor empty string, nor string composed of whitespace only.");


}

我只是简单地使用这个,而且大多数情况下它对我都有效。 它首先修剪空白,然后检查长度。

 if(value.trim().length === 0)
{
//code for empty value
}

也许这样更容易

if (!addr?.trim()){
//error
}