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

Обнаруживать, содержит ли строка какие-либо пробелы

Как определить, имеет ли строка пробельные символы?

Ниже показаны только фактические пробелы. Мне нужно проверить любые пробелы.

if(str.indexOf(' ') >= 0){
    console.log("contains spaces");
}
4b9b3361

Ответ 1

У вас есть место в любом месте строки, а не только между словами.

Если вы хотите найти какие-либо пробелы, вы можете использовать это, которое использует регулярное выражение:

if (/\s/.test(str)) {
    // It has any kind of whitespace
}

\s означает "любой символ пробела" (пробелы, вкладки, вертикальные вкладки, формы, разрывы строк и т.д.) и найдет этот символ в любом месте строки.

Согласно MDN, \s эквивалентно: [ \f\n\r\t\v​\u00a0\u1680​\u180e\u2000​\u2001\u2002​\u2003\u2004​\u2005\u2006​\u2007\u2008​\u2009\u200a​\u2028\u2029​​\u202f\u205f​\u3000].


По какой-то причине я изначально прочитал ваш вопрос как "Как узнать, содержит ли строка только пробелы?" и поэтому я ответил ниже. Но, как указывает @CrazyTrain, это не то, о чем говорится в этом вопросе. Я оставлю это, однако, на всякий случай...

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

if (/^ *$/.test(str)) {
    // It has only spaces, or is empty
}

Это говорит: сопоставьте начало строки (^), за которой следует ноль или более пробелов, за которыми следует конец строки ($). Измените * на +, если вы не хотите соответствовать пустой строке.

Если вы подразумеваете пробелы как общую концепцию:

if (/^\s*$/.test(str)) {
    // It has only whitespace
}

Использует \s (пробел), а не пробел, но в остальном то же самое. (И опять, измените * на +, если вы не хотите сопоставлять пустую строку.)

Ответ 2

var string  = 'hello world';
var arr = string.split(''); // converted the string to an array and then checked: 
if(arr[i] === ' '){
   console.log(i);
}

Я знаю, что регулярные выражения тоже могут помочь!