我看到了这个帖子,但我没有看到JavaScript特定的例子.有一个简单string.Empty
的JavaScript可用,还是只是检查的情况""
?
如果您只想检查是否有任何价值,您可以这样做
if (strValue) { //do something }
如果您需要专门为在空空字符串检查,我想核对""
是你最好的选择,使用的===
运营商(让你知道这是,事实上,一个字符串你对比较).
if (strValue === "") { //... }
为了检查字符串是否为空,null或未定义,我使用:
function isEmpty(str) { return (!str || 0 === str.length); }
为了检查字符串是否为空,null或未定义,我使用:
function isBlank(str) { return (!str || /^\s*$/.test(str)); }
用于检查字符串是空白还是仅包含空格:
String.prototype.isEmpty = function() { return (this.length === 0 || !this.trim()); };
以上所有都很好,但这会更好.使用!!
(而不是)运营商.
if(!!str){ some code here; }
或使用类型转换:
if(Boolean(str)){ codes here; }
两者都执行相同的功能,将变量类型转换为boolean,其中str
是变量.
返回false
的null,undefined,0,000,"",false
.
返回true
字符串"0"和空格"".
如果你需要确保字符串不只是一堆空格(我假设这是用于表单验证),你需要对空格进行替换.
if(str.replace(/\s/g,"") == ""){ }
你能得到的最接近的东西str.Empty
(前提是str是一个String)是:
if (!str.length) { ...
我用 :
function empty(e) {
switch (e) {
case "":
case 0:
case "0":
case null:
case false:
case typeof this == "undefined":
return true;
default:
return false;
}
}
empty(null) // true
empty(0) // true
empty(7) // false
empty("") // true
empty((function() {
return ""
})) // false
var s; // undefined var s = ""; // "" s.length // 0
JavaScript中没有任何代表空字符串的内容.对任一个length
(如果您知道var将始终是一个字符串)或反对进行检查""
尝试:
if (str && str.trim().length) { //... }
功能:
function is_empty(x) { return ( (typeof x == 'undefined') || (x == null) || (x == false) //same as: !x || (x.length == 0) || (x == "") || (x.replace(/\s/g,"") == "") || (!/[^\s]/.test(x)) || (/^\s*$/.test(x)) ); }
ps在Javascript中,不要在使用Line-Break之后
return
;
您可以使用lodash:_. isEmpty(value).
它涵盖了很多类似的情况下{}
,''
,null
,undefined
等.
但它总是返回true
的Number
类型的Javascript基本数据类型一样_.isEmpty(10)
或_.isEmpty(Number.MAX_VALUE)
两者的回报true
.
我不会太担心最有效的方法.使用最明确的意图.通常对我来说strVar == ""
.
编辑:根据Constantin的评论,如果strVar可能会有一些结果包含整数0值,那么这确实是那些意图澄清情况之一.
你也可以使用正则表达式:
if((/^\s*$/).test(str)) { }
检查空字符串或用空格填充的字符串.
很多答案,以及很多不同的可能性!
毫无疑问,快速和简单的实施赢家是: if (!str.length) {...}
但是,正如许多其他例子一样.最好的功能方法,我建议:
function empty(str)
{
if (typeof str == 'undefined' || !str || str.length === 0 || str === "" || !/[^\s]/.test(str) || /^\s*$/.test(str) || str.replace(/\s/g,"") === "")
{
return true;
}
else
{
return false;
}
}
检查是否var a;
存在
修剪出false spaces
值,然后测试emptiness
if ((a)&&(a.trim()!='')) { // if variable a is not empty do this }
此外,如果您将填充空格的字符串视为"空".您可以使用此正则表达式进行测试:
!/\S/.test(string); // Returns true if blank.
我经常使用这样的东西,
if (!str.length) { //do some thing }
我没有注意到一个考虑到字符串中空字符可能性的答案.例如,如果我们有一个空字符串:
var y = "\0"; // an empty string, but has a null character (y === "") // false, testing against an empty string does not work (y.length === 0) // false (y) // true, this is also not expected (y.match(/^[\s]*$/)) // false, again not wanted
要测试其null,可以执行以下操作:
String.prototype.isNull = function(){ return Boolean(this.match(/^[\0]*$/)); } ... "\0".isNull() // true
它适用于空字符串,并且在空字符串上,并且可以访问所有字符串.此外,它可以扩展为包含其他JavaScript空或空白字符(即不间断空格,字节顺序标记,行/段分隔符等).
所有这些答案都很好.
但我不能确定变量是一个字符串,不包含空格(这对我来说很重要),并且可以包含'0'(字符串).
我的版本:
function empty(str){ return !str || !/[^\s]+/.test(str); } empty(null); // true empty(0); // true empty(7); // false empty(""); // true empty("0"); // false empty(" "); // true
关于jsfiddle的示例.
如果一个人不仅需要检测空字符串而且还需要空白字符串,我将添加Goral的答案:
function isEmpty(s){ return !s.length; } function isBlank(s){ return isEmpty(s.trim()); }
同时我们可以使用一个函数来检查所有'空,',如null,undefined,'','',{},[].所以我写了这个.
var isEmpty = function(data) { if(typeof(data) === 'object'){ if(JSON.stringify(data) === '{}' || JSON.stringify(data) === '[]'){ return true; }else if(!data){ return true; } return false; }else if(typeof(data) === 'string'){ if(!data.trim()){ return true; } return false; }else if(typeof(data) === 'undefined'){ return true; }else{ return false; } }
用例和结果.
console.log(isEmpty()); // true console.log(isEmpty(null)); // true console.log(isEmpty('')); // true console.log(isEmpty(' ')); // true console.log(isEmpty(undefined)); // true console.log(isEmpty({})); // true console.log(isEmpty([])); // true console.log(isEmpty(0)); // false console.log(isEmpty('Hey')); // false
我经常使用类似的东西:
if (str == "") { //Do Something } else { //Do Something Else }
试试这个
str.value.length == 0
我使用组合,最快的检查是第一次.
function isBlank(pString){ if (!pString || pString.length == 0) { return true; } // checks for a non-white space character // which I think [citation needed] is faster // than removing all the whitespace and checking // against an empty string return !/[^\s]+/.test(pString); }
忽略空白字符串,您可以使用它来检查null,empty和undefined:
var obj = {}; (!!obj.str) //returns false obj.str = ""; (!!obj.str) //returns false obj.str = null; (!!obj.str) //returns false
简洁,它适用于未定义的属性,虽然它不是最易读的.
我做了一些研究,如果将非字符串和非空/空值传递给测试器函数会发生什么.众所周知,(0 =="")在javascript中是正确的,但由于0是一个值而不是空或null,您可能想要测试它.
以下两个函数仅对undefined,null,empty/whitespace值返回true,对其他所有值返回false,如数字,布尔值,对象,表达式等.
function IsNullOrEmpty(value) { return (value == null || value === ""); } function IsNullOrWhiteSpace(value) { return (value == null || !/\S/.test(value)); }
存在更复杂的例子,但这些例子很简单并且给出了一致的结果.没有必要测试undefined,因为它包含在(value == null)检查中.您也可以通过将它们添加到String来模仿C#行为,如下所示:
String.IsNullOrEmpty = function (value) { ... }
您不希望将它放在Strings原型中,因为如果String类的实例为null,则会出错:
String.prototype.IsNullOrEmpty = function (value) { ... } var myvar = null; if (1 == 2) { myvar = "OK"; } // could be set myvar.IsNullOrEmpty(); // throws error
我测试了以下值数组.如果有疑问,你可以循环测试你的功能.
// Helper items var MyClass = function (b) { this.a = "Hello World!"; this.b = b; }; MyClass.prototype.hello = function () { if (this.b == null) { alert(this.a); } else { alert(this.b); } }; var z; var arr = [ // 0: Explanation for printing, 1: actual value ['undefined', undefined], ['(var) z', z], ['null', null], ['empty', ''], ['space', ' '], ['tab', '\t'], ['newline', '\n'], ['carriage return', '\r'], ['"\\r\\n"', '\r\n'], ['"\\n\\r"', '\n\r'], ['" \\t \\n "', ' \t \n '], ['" txt \\t test \\n"', ' txt \t test \n'], ['"txt"', "txt"], ['"undefined"', 'undefined'], ['"null"', 'null'], ['"0"', '0'], ['"1"', '1'], ['"1.5"', '1.5'], ['"1,5"', '1,5'], // valid number in some locales, not in js ['comma', ','], ['dot', '.'], ['".5"', '.5'], ['0', 0], ['0.0', 0.0], ['1', 1], ['1.5', 1.5], ['NaN', NaN], ['/\S/', /\S/], ['true', true], ['false', false], ['function, returns true', function () { return true; } ], ['function, returns false', function () { return false; } ], ['function, returns null', function () { return null; } ], ['function, returns string', function () { return "test"; } ], ['function, returns undefined', function () { } ], ['MyClass', MyClass], ['new MyClass', new MyClass()], ['empty object', {}], ['non-empty object', { a: "a", match: "bogus", test: "bogus"}], ['object with toString: string', { a: "a", match: "bogus", test: "bogus", toString: function () { return "test"; } }], ['object with toString: null', { a: "a", match: "bogus", test: "bogus", toString: function () { return null; } }] ];
检查是否完全是一个空字符串:
if(val==="")...
检查它是否为空字符串或无值的逻辑等效项(null,undefined,0,NaN,false,...):
if(!val)...
您可以轻松地将其添加到JavaScript中的本机String对象中,并一遍又一遍地重复使用...
如果您想检查空字符串,则像下面的代码这样简单的事情就可以为您完成这项工作:''
String.prototype.isEmpty = String.prototype.isEmpty || function() { return !(!!this.length); }
否则,如果您想同时检查''
空字符串和' '
空格,则只需添加即可trim()
,例如下面的代码:
String.prototype.isEmpty = String.prototype.isEmpty || function() { return !(!!this.trim().length); }
您可以这样称呼:
''.isEmpty(); //return true 'alireza'.isEmpty(); //return false
到目前为止,还没有像string.empty这样的直接方法来检查字符串是否为空。但是在您的代码中,您可以使用包装器检查是否为空字符串,例如:
// considering the variable in which your string is saved is named str. if (str && str.length>0) { // Your code here which you want to run if the string is not empty. }
使用此方法,您还可以确保字符串也未定义或为null。记住,未定义,null和empty是三件事。
尝试这个:
export const isEmpty = string => (!string || !string.length);
没有isEmpty()
方法,你必须检查类型和长度:
if (typeof test === 'string' && test.length === 0){ ...
类型检查是必要的,以避免运行时错误时test
是undefined
或null
.
不要假设您检查的变量是字符串.不要假设如果这个var有一个长度,那么它就是一个字符串.
问题是:仔细考虑您的应用必须做什么并且可以接受的内容.建立强大的东西.
如果你的方法/函数只应处理非空字符串,那么测试参数是否为非空字符串并且不做"技巧".
作为一个例子,如果你在这里不小心遵循一些建议会爆炸.
var getLastChar = function (str) { if (str.length > 0) return str.charAt(str.length - 1) } getLastChar('hello') => "o" getLastChar([0,1,2,3]) => TypeError: Object [object Array] has no method 'charAt'
所以,我坚持下去
if (myVar === '') ...
我在这里看不到好的答案(至少不是一个适合我的答案),所以我决定自己回答:
value === undefined || value === null || value === "";
您需要开始检查它是否未定义,否则您的方法可能会爆炸,而不是检查是否等于null或等于空字符串
你不能拥有!或仅if(value)
当您检查后才0
会给您一个错误的答案(0为错误)
这么说,用下面的方法包装它:
public static isEmpty(value: any): boolean {
return value === undefined || value === null || value === "";
}
PS。您不需要检查typeof,因为它甚至在进入方法之前都会爆炸。