包含一个空格的字符串长度始终等于 1:
alert('My str length: ' + str.length);
空格是一个字符,所以:
str = " ";
alert('My str length:' + str.length); // My str length: 3
如何区分空字符串和仅包含空格的字符串?如何检测仅包含空格的字符串?
包含一个空格的字符串长度始终等于 1:
alert('My str length: ' + str.length);
空格是一个字符,所以:
str = " ";
alert('My str length:' + str.length); // My str length: 3
如何区分空字符串和仅包含空格的字符串?如何检测仅包含空格的字符串?
为此,您可以使用正则表达式来删除字符串中的所有空格。如果结果字符串的长度是0
,那么您可以确定原始字符串仅包含空格。试试这个:
var str = " ";
if (!str.replace(/\s/g, '').length) {
console.log('string only contains whitespace (ie. spaces, tabs or line breaks)');
}
最快的解决方案是使用正则表达式原型函数test()并查找任何不是空格、制表符或换行符的字符\S
:
if (!/\S/.test(str)) {
// Didn't find something other than a space which means it's empty
}
如果你有一个超长的字符串,它会产生很大的不同,因为它会在找到非空格字符后立即停止处理。
与 Rory 的回答类似,使用 ECMA 5,您现在可以调用str.trim().length
而不是使用正则表达式。如果结果值为 0,则您知道您有一个仅包含空格的字符串。
if (!str.trim().length) {
console.log('str is empty!');
}
您可以在此处阅读有关修剪的更多信息。
编辑:几年后看了这个之后,我注意到这可以进一步简化。由于 trim 的结果要么为真要么为假,您还可以执行以下操作:
if (!str.trim()) {
console.log('str is empty!');
}
if(!str.trim()){
console.log('string is empty or only contains spaces');
}
String#trim()
删除字符串开头和结尾的空格。如果字符串只包含空格,则修剪后为空,空字符串在 JavaScript 中为假。
如果字符串可能是null
or undefined
,我们需要在修剪之前首先检查字符串本身是否为假。
if(!str || !str.trim()){
//str is null, undefined, or contains only spaces
}
这可以使用可选的链接运算符来简化。
if(!str?.trim()){
//str is null, undefined, or contains only spaces
}
您可以通过为您的字符串创建一个修剪函数来修剪您的字符串值。
String.prototype.trim = function () {
return this.replace(/^\s*/, "").replace(/\s*$/, "");
}
现在它将可用于您的每个字符串,您可以将其用作
str.trim().length// Result will be 0
您还可以使用此方法删除字符串开头和结尾的空格,即
" hello ".trim(); // Result will be "hello"
通过创建修剪函数修剪您的字符串值
var text = " ";
if($.trim(text.length == 0){
console.log("Text is empty");
}
else
{
console.log("Text is not empty");
}
如果我们想检查字符串是否只包含空格,那么这可能会有所帮助。
const str = ' ';
console.log(/\s/.test(str));
这将记录为真。
这适用于 Dart 而不是 Javascript。但是,当我搜索如何使用 Dart 执行此操作时,出现了这个问题,所以我认为其他人可能需要 Dart 的答案。
String foo = ' ';
if (foo.replaceAll(' ', '').length == 0) {
print('ALL WHITE SPACE');
}
else {
print('NOT ALL WHITE SPACE');
}
为了进一步澄清,字符串' d '
将打印“不是全部空白”,而字符串' '
将打印“全部空白”。