string.Empty
的方法,或者只需要检查 ""
是否为空?string.Empty
的方法,或者只需要检查 ""
是否为空?尝试:
if (str && str.trim().length) {
//...
}
str.trim().length
比 str.trim()
更快,大约快1%。 - devildeltaif (!str) { ... }
- Stephen M Irving我认为不需要过于担心最高效的方法,应使用最清晰明了的方法来表达意图。对我而言,通常会使用strVar == ""
。
根据Constantin 的评论,如果 strVar 可能包含一个整数 0 值,那么这就是一种需要明确意图的情况。
===
会更好。它只有在 strVar
是一个空字符串时才返回 true。 - Useless Codeif ((input?.trim()?.length || 0) > 0) {
// input must not be any of:
// undefined
// null
// ""
// " " or just whitespace
}
或者以函数形式:
const isNotNilOrWhitespace = input => (input?.trim()?.length || 0) > 0;
const isNilOrWhitespace = input => (input?.trim()?.length || 0) === 0;
说明:
如果input
为undefined
或null
,则空值合并运算符?.
将导致input?.trim()?.length
为undefined
或null
。使用逻辑或运算符(||
)连接0
将得到0
。 0
不是> 0
,因此结果将为false
,即它是一个零值。
如果input
为空或只包含空格,则.trim()
将删除前导和尾随空格,这将使空输入保持不变,并将任何空格转换为一个空值。然后空字符串的长度为0
,并且像上面一样,0
不是> 0
,因此结果将为false
,即它是空的或仅包含空格。
input
是任何其他字符串,则在调用.trim()
后其长度将大于0,因此结果将为true
,即它不是空值,也不是仅包含空格的值。const isNilOrWhitespace = input => !input?.trim();
这样怎么样? - Thomas有很多答案,也有很多不同的可能性!
毫无疑问,对于快速和简单的实现,赢家是: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;
}
有点过度了,我知道。
str.length === 0
将返回 true。 - RobG这里有很多有用的信息,但我认为最重要的元素没有被提到。
null
、undefined
和""
都是“假值”(falsy)。
在评估空字符串时,通常是因为需要将其替换为其他内容。
在这种情况下,您可以期望以下行为。
var a = ""
var b = null
var c = undefined
console.log(a || "falsy string provided") // prints ->"falsy string provided"
console.log(b || "falsy string provided") // prints ->"falsy string provided"
console.log(c || "falsy string provided") // prints ->"falsy string provided"
考虑到这一点,一个可以返回字符串是""
、null
或者undefined
(无效字符串)还是有效字符串的方法或函数就很简单:
const validStr = (str) => str ? true : false
validStr(undefined) // returns false
validStr(null) // returns false
validStr("") // returns false
validStr("My String") // returns true
你也可以使用正则表达式:
if((/^\s*$/).test(str)) { }
检查字符串是否为空或仅由空格填充。
var a;
是否存在去除值中的false spaces
,然后测试是否为空
if ((a)&&(a.trim()!=''))
{
// if variable a is not empty do this
}
我通常使用类似这样的东西,
if (!str.length) {
// Do something
}
typeof variable != "undefined"
。 - Abimael Martell此外,如果您认为一个只包含空格的字符串是“空”的话。
您可以使用这个正则表达式进行测试:
!/\S/.test(string); // Returns true if blank.
如果需要检测不仅是空字符串还包括空格字符串,我将添加到Goral的回答:
function isEmpty(s){
return !s.length;
}
function isBlank(s){
return isEmpty(s.trim());
}
null
或undefined
是空的呢?一个空字符串就是一个空字符串,它不是null
或undefined
。 - Flimm