javascript-количество пробелов перед первым символом строки

каков наилучший способ подсчитать, сколько пробелов перед первым символом строки?

str0 = 'nospaces even with other spaces still bring back zero';
str1 = ' onespace do not care about other spaces';
str2 = '  twospaces';

5 ответов


использовать String.prototype.search

'    foo'.search(/\S/);  // 4, index of first non whitespace char

изменить: Вы можете искать "не пробелы или конец ввода", чтобы избежать проверки на -1.

'    '.search(/\S|$/)

используя следующее регулярное выражение:

/^\s*/

на String.prototype.match() приведет к массиву с одним элементом, длина которого покажет вам, сколько символов пробелов было в начале строки.

pttrn = /^\s*/;

str0 = 'nospaces';
len0 = str0.match(pttrn)[0].length;

str1 = ' onespace do not care about other spaces';
len1 = str1.match(pttrn)[0].length;

str2 = '  twospaces';
len2 = str2.match(pttrn)[0].length;

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


str0 = 'nospaces';
str1 = ' onespace do not care about other spaces';
str2 = '  twospaces';

arr_str0 = str0.match(/^[\s]*/g);
count1 = arr_str0[0].length;
console.log(count1);

arr_str1 = str1.match(/^[\s]*/g);
count2 = arr_str1[0].length;
console.log(count2);

arr_str2 = str2.match(/^[\s]*/g);
count3 = arr_str2[0].length;
console.log(count3);

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

^ : start of string.
\s : for space
[ : beginning of character group
] : end of character group

вы можете использовать trimLeft () следующим образом

myString.length - myString.trimLeft().length

доказательство его работы:

let myString = '       hello there '

let spacesAtStart = myString.length - myString.trimLeft().length

console.log(spacesAtStart)

см https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/TrimLeft


str.match(/^\s*/)[0].length

str-это строка.