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