Подтвердить что ты не робот

Как определить строку, содержащую только пробелы?

Длина строки, которая содержит одно пространство, всегда равна 1:

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

Пространство является символом, поэтому:

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

Как я могу провести различие между пустой строкой и строкой, содержащей только пробелы? Как определить строку, содержащую только пробелы?

4b9b3361

Ответ 1

Для этого вы можете использовать регулярное выражение для удаления всех пробелов в строке. Если длина результирующей строки равна 0, вы можете быть уверены, что в исходном тексте содержится только пробел. Попробуй это:

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

Ответ 2

Самое быстрое решение будет использовать функцию прототипа regex test() и поиск любого символа, который не является пробелом или разрывом строки \S:

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

Если у вас супер длинная строка, это может существенно повлиять.

Ответ 3

Вы можете обрезать значение String, создав функцию обрезки для ваших строк.

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

теперь он будет доступен для каждой строки, и вы можете использовать его как

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

Вы также можете использовать этот метод для удаления пробелов в начале и в конце строки i.e

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

Ответ 4

Удаление пробела из строки может быть выполнено с помощью String.trim().

//!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.";
  }
}
<input type="text">
<br/>
<button onClick="testEmpty()">Check</button>
<p/>
<span id="result"></span>

Ответ 5

Обрезайте значение строки, создав функцию обрезки

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

Ответ 6

Подобно ответу Рори, с ECMA 5 теперь вы можете просто вызывать str.trim(). Length вместо использования регулярного выражения. Если полученное значение равно 0, значит, у вас есть строка, содержащая только пробелы.

if (!str.trim().length) {
    console.log("str is empty!");
}

Вы можете узнать больше об отделке здесь.