如何检测只包含空格的字符串?

时间:2012-04-21 18:56:33

标签: javascript

包含一个空格的字符串长度始终等于1:

alert('My str length: ' + str.length);

空格是一个角色,所以:

str = "   ";
alert('My str length:' + str.length); // My str length: 3

如何区分空字符串和仅包含空格的字符串?如何检测仅包含空格的字符串?

7 个答案:

答案 0 :(得分:88)

要实现此目的,您可以使用正则表达式删除字符串中的所有空格。如果结果字符串的长度为0,那么您可以确定原始字符串只包含空格。试试这个:

var str = "    ";
if (!str.replace(/\s/g, '').length) {
  console.log('string only contains whitespace (ie. spaces, tabs or line breaks)');
}

答案 1 :(得分:29)

最快的解决方案是使用正则表达式原型函数test()并查找不是空格或换行符的任何字符\S

if (/\S/.test(str))
{
    // found something other than a space or line break
}

如果你有一个超长字符串,它可以产生显着的差异。

答案 2 :(得分:5)

您可以通过为字符串创建修剪函数来修剪字符串值。

String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

现在它可用于您的每个字符串,您可以将其用作

str.trim().length// Result will be 0

您也可以使用此方法删除字符串开头和结尾的空格,即

"  hello  ".trim(); // Result will be "hello"

答案 3 :(得分:4)

可以使用String.trim()从字符串中删除空格。

<div id="msg-editor-imagelib" class="popup-container" style="visibility: visible; opacity: 1;">
<div class="popup-mask"></div>
<div class="popup confirm restrict">
<div class="popup-header">
<span class="popup-header-title left">Add image</span>
<span class="popup-header-close"></span>
</div>
<div class="popup-content">
<div class="switch-container">
<div class="image-popup-content">
</div>
<div class="options-panel-overlay open"></div>
<div class="options-panel-container empty open">
<div class="border-right"></div>
<div class="img-container">
<div class="notification info">You can select an image either by selecting an image from Smartfocus Image Library or enter a distant URL. Once selected, this panel will give you details like ALT tags and link.</div>
</div>
<div class="options-panel-container edition visible open">
<div class="border-right"></div>
<div class="image-preview-container">
<div class="custom-image-preview-placeholder onthefly-placeholder onthefly-placeholder--imghelper hidden">
<img id="image-popup-image-preview" src="http://p2itgtre.emv2.com/IL/5/4/8/1101011548/1735085964.jpg">
</div>
<div class="inputs-block">
<span class="image-label">1735085964</span>
<div id="image-source" class="input-header">
<span>Source</span>
<span class="source">Image Library</span>
</div>
<div class="input-header">
<span>Alternative tag</span>
</div>
<input id="alt-tag-input" type="text" value="">
<div id="alt-tag-helper" class="icon help cue sf-icon sf-icon--small"></div>
</div>
<div class="button-container">
<div id="image-popup-options-apply" class="submit blue popup-confirm">Apply & close</div>
</div>
</div>
</div>
</div>

此方法可用于检查String是否仅包含空格,并且可以每次这样调用它:

//!str will return true if the string is null, undefined, or ''
//!str.trim() will return true if the string is '' after removing trailing whitespaces (which means it is an empty string)
function isNullOrEmpty(str){
    return !str||!str.trim();
}

演示:

var str = document.getElementById("txt").value;
if(isNullOrEmpty(str)){
     console.log("String is empty or contains only spaces.");
}
function isNullOrEmpty(str){
    return !str||!str.trim();
}
const resultElem = document.getElementById("result");
const inputElem = document.querySelector('input');
function testEmpty(){
  if(isNullOrEmpty(inputElem.value)){
  result.textContent = "Input is an empty String or a String containing only spaces.";
  } else {
    result.textContent = "Input is not an empty String or a String containing only spaces.";
  }
}

答案 4 :(得分:1)

类似于Rory的答案,使用ECMA 5,您现在可以仅调用str.trim()。length而不使用正则表达式。如果结果值为0,则说明您有一个仅包含空格的字符串。

int main(){
    double * x = (double*)malloc(sizeof(double));
    *x = -5.12345;
    printf("%f\n", *x);
    *((long*)x) &= 0x7FFFFFFFFFFFFFFF;
    printf("%f\n", *x);
    return 0;
}

您可以了解有关修剪here的更多信息。

答案 5 :(得分:0)

通过创建修剪函数修剪String值

var text = "  ";
if($.trim(text.length == 0){
  console.log("Text is empty");
}
else
{
  console.log("Text is not empty");
}

答案 6 :(得分:0)

这适用于 Dart 而不是 Javascript。但是,当我搜索如何使用 Dart 执行此操作时,出现了这个问题,因此我认为其他人可能需要 Dart 的答案。

String foo = '        ';
if (foo.replaceAll(' ', '').length == 0) {
print('ALL WHITE SPACE');
}
else {
print('NOT ALL WHITE SPACE');
}

为了进一步澄清,字符串 ' d ' 将打印“NOT ALL WHITE SPACE”,字符串 ' ' 将打印“ALL WHITE SPACE”。