Заменить все оставленные пробелы указанной строкой c - PullRequest
4 голосов
/ 29 марта 2020

У меня следующий код для замены левых пробелов указанной строкой c, но она не работает так, как я хочу.

console.log('  asdadasdad as asdasd asasd'.replace(/^\s+/, 'x'))

Он поменял все левые пробелы на x, но он должен поменять все левые пробелы на один x.

Но мне просто нужен этот вывод:

xxasdadasdad as asdasd asasd

Как я могу это сделать? Большое спасибо.

Ответы [ 5 ]

1 голос
/ 29 марта 2020

Вы можете использовать

.replace(/\s/gy, 'x')

Здесь каждый пробел в начале строки заменяется на x. Сочетание модификаторов g (global) и y (sticky) приводит к совпадению в начале строки, а затем последовательно, пока совпадение не будет найдено.

JS demo:

console.log(
  '  asdadasdad as asdasd asasd'.replace(/\s/gy, 'x')
)
1 голос
/ 29 марта 2020

Это обязательно будет в две строки:

  var str ='   asdadasdad as asdasd asasd';   
  console.log(str.trim().padStart(str.length, 'x')); 
1 голос
/ 29 марта 2020

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

console.log('  asdadasdad as asdasd asasd'.replace(/^\s+/, m => new Array(m.length).fill('x').join('')))

Или поочередно с положительным взглядом (не поддерживается широко, , проверьте здесь ).

    console.log('  asdadasdad as asdasd asasd'.replace(/(?<=^\s*)\s/g, 'x'))
1 голос
/ 29 марта 2020

Вы можете использовать лямбда-функцию в качестве второго аргумента .replace:

const s = '  asdadasdad as asdasd asasd';

var repl = s.replace(/^\s+/, m => m.replace(/\s/g, 'x'));

console.log(repl);
0 голосов
/ 29 марта 2020

В настоящее время вы заменяете полное совпадение одним символом x, но вам нужно повторить x до длины совпадения,

let str = '  asdadasdad as asdasd asasd'
let replacedStr = str.replace(/^\s+/, (m) => 'x'.repeat(m.length))
console.log(replacedStr)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...