我需要检查变量是否为空或全部为空或只是空白(“”)。
我有以下内容,但不起作用:
var addr;
addr = " ";
if (!addr) {
// pull error
}
如果我执行以下操作,它就会起作用:
if (addr) {
}
String.IsNullOrWhiteSpace(value)
。
一种非 jQuery 解决方案,更接近地模仿
IsNullOrWhiteSpace
,但仅检测 null、空或全空格:
function isEmptyOrSpaces(str){
return str === null || str.match(/^ *$/) !== null;
}
...然后:
var addr = ' ';
if(isEmptyOrSpaces(addr)){
// error
}
* 编辑* 请注意,op 特别指出:
我需要检查 var 是否为空或有任何空格,或者只是空白。
因此,虽然“空白”包含的不仅仅是空、空格或空白,但我的答案旨在回答 op 的具体问题。 这很重要,因为 op 可能不想捕获诸如选项卡之类的东西。
if (addr == null || addr.trim() === ''){
//...
}
null
比较也会捕捉到undefined
。如果您也希望 false
通过,请使用 !addr
。为了向后兼容浏览器,请将 addr.trim()
替换为 $.trim(addr)
。
您可以使用
if(addr && (addr = $.trim(addr)))
这样做的优点是实际上从
addr
中删除任何外部空格,而不是在执行检查时忽略它。
老问题,但我认为它值得一个更简单的答案。
你可以简单地做:
var addr = " ";
if (addr && addr.trim()) {
console.log("I'm not null, nor undefined, nor empty string, nor string composed of whitespace only.");
}
上述内容的简化版本:(来自此处:https://stackoverflow.com/a/32800728/47226)
function isNullOrWhitespace( input ) {
return !input || !input.trim();
}
您可以创建自己的方法相当于
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;
}
isEmptyOrSpaces(str){
return !str || str.trim() === '';
}
也许这是最简单的方法
if (!addr?.trim()){
//error
}
我通常这样做:
!value?.toString().trim()
如果需要,您可以将其包装在函数中
function isNullOrWhiteSpace(value) {
return !value?.toString().trim()
}
console.log(isNullOrWhiteSpace(''))
console.log(isNullOrWhiteSpace(' '))
console.log(isNullOrWhiteSpace(undefined))
console.log(isNullOrWhiteSpace(null))
console.log(isNullOrWhiteSpace('0'))
console.log(isNullOrWhiteSpace(0))
如果您只想检查字符串,则可以轻松调整
if (typeof(value) === 'number') throw new Error('Invalid input')
我只使用这个,并且大多数时候这对我有用。 它首先修剪空白,然后检查长度。
if(value.trim().length === 0)
{
//code for empty value
}
试试这个
/**
* 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;
}
基于 Madbreaks 的回答,我也想解释
undefined
:
function isNullOrWhitespace(str) {
return str == null || str.match(/^\s*$/) !== null;
}
开玩笑测试:
it('works for undefined', () => {
expect(isNullOrWhitespace(undefined)).toEqual(true);
});
it('works for null', () => {
expect(isNullOrWhitespace(null)).toEqual(true);
});
it('works for empty', () => {
expect(isNullOrWhitespace('')).toEqual(true);
});
it('works for whitespace', () => {
expect(isNullOrWhitespace(' ')).toEqual(true);
// Tab
expect(isNullOrWhitespace(' ')).toEqual(true);
});
我根据 MadBreak 的答案编写了以下片段。就我而言,在某些情况下传入非字符串对象会引发异常。以下函数在调用之前检查
str.match
函数是否存在。
function isEmptyOrSpaces(str){
return str === null || (str.match && str.match(/^ *$/) !== null);
}
你可以试试这个:
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