-
5 仅供参考,我认为String类最有用的API是 Mozilla公司 和 javascript工具包 .[elated.com]( elated.com/articles/working-with-strings网站 )有一个关于String的所有属性、方法…的教程,。。。 请注意:Mozilla链接已更新为 developer.mozilla.org/en/JavaScript/Reference/Global_Objects/… – 基因T 评论 2008年10月2日15:16 -
选中此选项: stackoverflow.com/a/36491147/7026966 – 希曼舒·谢哈尔 评论 2019年5月13日10:58 -
2 如果明确规定了要求,那将大有帮助。 对于什么值应该 栈空 返回true? 如果检查“”,则推断只有当值为Type字符串且长度为0时,它才应返回true。 这里的许多答案都假设,对于某些或所有错误的值,它也应该返回true。 – 罗布·G 评论 2019年10月16日12:47 -
结构长度>-1 – 奥马尔·巴赫什 评论 2021年1月31日4:29 -
我完全同意@RobG的观点,这个问题定义不清。 你到底为什么会考虑 无效的 或 未定义 空的? 空字符串是空字符串,而不是 无效的 或 未定义 – 弗利姆 评论 2021年8月11日14:59
55个答案
空字符串,未定义,null。。。
if(strValue){ //strValue是非空字符串,true,42,Infinity,[]。。。 }
if(!strValue){ //strValue为空字符串,false,0,null,undefined。。。 }
空字符串(仅!)
if(strValue===“”){ //strValue为空字符串 }
if(strValue!==“”){ //strValue不是空字符串 }
-
280 -
80 @Vincent在Chrome开发工具中进行一些天真的分析,测试 === '' 与 .长度 没有显示出任何明显的改进(以及使用 .长度 只有当您可以假设您有字符串时才有效) – 布基斯 评论 2010年9月27日13:19 -
47 -
40 只需注意,如果您的“空字符串”定义中包含空格,则此解决方案不合适。 上面由1个或多个空格组成的字符串返回true。 如果您正在使用JQuery,您可以简单地使用这个:If($.trim(ref).length===0)-根据对类似问题的回答: stackoverflow.com/questions/2031085/… – 代码爬升器 评论 2011年10月3日15:02 -
154
函数isEmpty(str){ 返回(!str||str.length===0); }
const isEmpty=(str)=>(!str?.length);
函数为空白(str){ return(!str||/^\s*$/.test(str)); }
String.prototype.isEmpty=函数(){ //这与使用的isEmpty函数的工作方式不同 //在第一个示例中,对于只包含空格的字符串,它将返回true return(this.length===0||!this.trim()); }; console.log(“示例”.isEmpty());
-
47 -
134 @文森特条件通常是这样写的 if(变量==常量) 如果您忘记了“=”,那么您将为变量分配常量值,而不是测试。 代码仍然可以工作,因为您可以在if中分配变量。因此,编写此条件的一种更安全的方法是反转常量值和变量。 这样,当您测试代码时,会看到一个错误(赋值中的左手边无效)。 您还可以使用JSHint等工具来禁止条件中的赋值,并在编写条件时收到警告。 – 格兰杜阿索 评论 2013年9月23日9:58 -
12 -
51 @文森特,这也被称为“尤达条件”,比如 如果天空是蓝色的 。请参阅 dockycoder.net/2011/11/yoda-conditions-pokemon-exception.html – 亚利桑那州。 评论 2016年1月26日0:12 -
三
if(!!str){ //这里有一些代码 }
if(布尔值(str)){ //此处输入代码 }
它会返回 假 对于 无效的 , 未定义 , 0 , 000 , "" , 假 . 它会返回 真的 对于空字符串以外的所有字符串值(包括以下字符串 "0" 和 " " )
-
57 -
7 @PeterOlson如果您试图将变量保存为布尔值,以检查多个字符串的内容,那么您应该这样做。。 阿卡 var any=(!!str1&&!!str2&&!str3) 如果其中也有数字,则进行处理 – 约翰·鲁德尔 评论 2015年3月10日23:00 -
51 -
29 -
11
if(!str.length){。。。
-
27 -
8 -
1
if(str.replace(/\s/g,“”)==“”){ }
函数为空(e){ 开关(e){ 案例“”: 案例0: 案例“0”: 大小写为null: 案例错误: 大小写未定义: 返回true; 违约: 返回false; } } 空(null)//真 空(0)//真 空(7)//假 空(“”)//真 空((function(){ 返回“” }))//错误
性能
基于的简单解决方案 ! 字符串 , == , === 和 长度 对所有浏览器(A、B、C、G、I、J)都很快 基于正则表达式的解决方案( 测试 , 代替 )和 字符位于 对于所有浏览器(H、L、M、P)来说都是最慢的 被标记为最快的解决方案仅在一次测试运行中是最快的,但在许多运行中,它在“快速”解决方案组中都会发生变化
细节
"" “a” " " -空字符串、带字母的字符串和带空格的字符串 [] {} (f) -数组、对象和函数 0 1 NaN公司 无穷 -数字 真的 假 -布尔值 无效的 未定义
函数A(str){ 设r=1; if(!str) r=0; 返回r; } 函数B(str){ 设r=1; 如果(str==“”) r=0; 返回r; } 函数C(str){ 设r=1; if(str==“”) r=0; 返回r; } 函数D(str){ 设r=1; 如果(!str||0===str.length) r=0; 返回r; } 函数E(str){ 设r=1; if(!str||/^\s*$/.test(str)) r=0; 返回r; } 函数F(str){ 设r=1; if(!布尔值(str)) r=0; 返回r; } 函数G(str){ 设r=1; if(!((typeof str!='undefined')&&str)) r=0; 返回r; } 函数H(str){ 设r=1; if(!/\S/.test(str)) r=0; 返回r; } 函数I(str){ 设r=1; if(!str.length) r=0; 返回r; } 函数J(str){ 设r=1; if(str.length<=0) r=0; 返回r; } 函数K(str){ 设r=1; if(str.length===0 | |!str.trim()) r=0; 返回r; } 函数L(str){ 设r=1; if(str.replace(/\s/g,“”)==“”) r=0; 返回r; } 函数M(str){ 设r=1; if((/^\s*$/).test(str)) r=0; 返回r; } 函数N(str){ 设r=1; if(!str||!str.trim().length) r=0; 返回r; } 函数O(str){ 设r=1; if(!str||!str.trim()) r=0; 返回r; } 函数P(str){ 设r=1; if(!str.charAt(0)) r=0; 返回r; } 函数Q(str){ 设r=1; if(!str||(str.trim()=='')) r=0; 返回r; } 函数R(str){ 设r=1; if(typeof str==“未定义”|| ! 字符串|| str.length===0|| str===“”|| !/ [^\s]/.test(字符串)|| /^\s*$/.test(str)|| str.replace(/\s/g,“”)===“”) r=0; 返回r; } //---测试--- console.log('“”“a”“[]{}0 1 NaN Infinity f true false null undefined'); 让log1=(s,f)=>控制台.log(`${s}:${f(“”)}${f; 让log2=(s,f)=>控制台.log(`${s}:${f(“”)}${f; 让log3=(s,f)=>console.log(`${s}:${f(“”)}${f; log1('A',A); log1(“B”,B); log1('C',C); log1('D',D); log1(‘E’,E); log1(‘F’,F); log1(“G”,G); log1(‘H’,H); log2(‘I’,I); log2(‘J’,J); log3(‘K’,K); log3(‘L’,L); log3('M',M); log3('N',N); log3(“O”,O); log3(‘P’,P); log3(‘Q’,Q); log3(‘R’,R);
函数为空(x) { return(//在return后不放换行符 (x的类型==“未定义”) || (x==空) || (x==false)//与:相同! x个 || (x长度==0) || (x==0)//注意这一行,您可能不需要它。 || (x==“”) || (x.replace(/\s/g,“”)==“”) || (!/[^\s]/.test(x)) || (/^\s*$/.test(x)) ); }
if((输入?.trim())?。 长度||0)>0){ //输入不得为以下任何一项: //未定义 //空 // "" //“”或只是空白 }
const isNotNilOrWhitespace=input=>(输入?.trim()?。 长度|0)>0; const isNilOrWhitespace=input=>(输入?.trim()?。 长度||0)===0;
var a=“” var b=空 var c=未定义 console.log(a | |“falsy-string provided”)//打印->“falsy string proved” console.log(b | |“提供虚假字符串”)//打印->“提供虚假串” console.log(c | |“falsy-string provided”)//打印->“falsy string proved”
const validStr=(str)=>str? 真:假 validStr(未定义)//返回false validStr(null)//返回false validStr(“”)//返回false validStr(“我的字符串”)//返回true
函数为空(str) { if(typeof str=='undefined'||!str || str.length==0|| str==“”||!/[^\s]/.test(str)||/^\s*$/.test(str)||str.replace(/\s/g,“”)==“”) 返回true; 其他的 返回false; }
-
2 -
-
-
if(!str.length){ //做点什么 }
-
4 -
-
三 @AbimaelMartell为什么不? 您有一个变量,该变量要么是您声明的,要么是从您无法控制的某个范围传递给您的,例如在方法或API调用的响应中。 您可以假设它包含一个值并使用上面的检查,但如果它没有定义或为null,您将得到一个错误。 var测试=空; if(!test.length){alert(“adrian是错误的”);} 评论 2014年4月1日8:28 -
return(!value||value==未定义||value=“”||value.length==0);
return(!value||value==未定义||value=“”);
return(!value||value==未定义);
return(!value);
返回! 价值
函数isBlank(pString){ if(!pString){ 返回true; } //检查非空白字符 //我认为[需要引用]更快 //而不是删除所有空白并进行检查 //针对空字符串 返回/ [^\s]+/.test(pString); }
var y=“\0”;// 空字符串,但具有空字符 (y===“”)//false,对空字符串进行测试不起作用 (y长度===0)//假 (y) //真的,这也是意料之外的 (y.match(/^[\s]*$/))//false,同样不需要
String.prototype.isNull=函数(){ return Boolean(this.match(/^[\0]*$/)); } ... “\0”.isNull()//true
var isEmpty=函数(数据){ if(typeof(data)===“对象”){ if(JSON.stringify(data)==='{}'||JSON.strongify{ 返回true; }else if(!data){ 返回true; } 返回false; }else if(typeof(data)===“字符串”){ if(!data.trim()){ 返回true; } 返回false; }else if(typeof(data)===“未定义”){ 返回true; }其他{ 返回false; } }
console.log(isEmpty());// 真的 console.log(isEmpty(null));// 真的 console.log(isEmpty(“”));// 真的 console.log(isEmpty(“”));// 真的 console.log(isEmpty(未定义));// 真的 console.log(isEmpty({}));// 真的 console.log(isEmpty([]));// 真的 console.log(isEmpty(0));// 假 console.log(isEmpty('Hey'));// 假
函数IsNullOrEmpty(值) { return(value==null||value===“”); } 函数IsNullOrWhiteSpace(值) { return(value==null ||!/\S/.test(value)); }
字符串。 IsNullOrEmpty=函数(值){…}
字符串原型。 IsNullOrEmpty=函数(值){…} var myvar=空; if(1==2){myvar=“OK”;}//可以设置 米瓦尔。 IsNullOrEmpty();// 引发错误
//助手项目 var MyClass=函数(b){this.a=“Hello World!”;this.b=b;}; MyClass.prototype.hello=函数(){if(this.b==null){alert(this.a);}else(this.b);}}; 变量z; var arr=[ //0:打印说明,1:实际值 [“未定义”,未定义], ['(var)z',z], ['null',null], [“空”,“”], ['space',''], ['tab','\t'], ['newline','\n'], ['carriage return','\r'], ['“\\r\\n”','\r\n'], ['“\\n\\r”','\n\r'], ['“\\t\\n”','\t\n'], ['“txt\\t测试”,'txt\t测试'], [“文本”,“文本”], ['“未定义”','未定义'], ['“null”','null'], ['"0"', '0'], ['"1"', '1'], ['"1.5"', '1.5'], ['“1,5”','1,5'],//在某些区域设置中是有效的数字,而不是在JavaScript中 ['逗号',','], ['dot','.'], ['".5"', '.5'], ['0', 0], ['0.0', 0.0], ['1', 1], ['1.5', 1.5], ['NaN',NaN], ['/\S/',/\S/], [真的,真的], [“假”,假], ['function,returns true',function(){return true;}], ['函数,返回false',函数(){return false;}], ['function,returns null',function(){return null;}], ['function,returns string',function(){return“test”;}], ['函数,返回未定义的',函数(){}], ['MyClass',MyClass], ['新建MyClass',新建MyClass()], ['空对象',{}], ['非空对象',{a:“a”,match:“伪对象”,test:“伪”}], ['object with toString:string',{a:“a”,match:“bogus”,test:“bougs”,toString:函数(){return“test”;}}], ['object with toString:null',{a:“a”,match:“bogus”,test:“bougs”,toString:函数(){return null;}}] ];
-
可能最好使用Boolean(value)构造,将未定义值和空值(以及0、-0、false、NaN)视为false。 请参见 stackoverflow.com/questions/856324/… – 朱拉夫列夫A。 评论 2019年11月29日14:34