Мне нужно применить заменяющую маску поверх строки в javascript. Маска представляет собой пользовательский ввод с помощью следующего синтаксиса:Маска замены символов над строкой в javascript
- «#» указывает на то, что символ в той же позиции во входной строке должны быть оставлены нетронутыми
- Любое другое значение указывает на то, что символ в той же позиции во входной строке следует заменить на это значение
У меня появился следующий код, который работает, но мне интересно, есть ли лучший способ достичь этого с помощью одного регулярного выражения или любого другого способ (без библиотеки пожалуйста).
Спасибо
var reference = '123-45678-000';
var mask ='###W#####-9##';
var newReference = mask;
while ((match = /#{1}/.exec(newReference)) != null) {
newReference = newReference.substring(0, match.index) + reference.substring(match.index,match.index+1) + newReference.substring(match.index + 1);
}
console.log("old : " + reference); //prints 123-45678-000
console.log("mask: " + mask); //prints ###W######9##
console.log("new : " + newReference); //prints 123W45678-900
Что должно быть сделано, если длины не совпадают. Используя вашу маску образца '### W ##### - 9 ##', что должно произойти, если я только введу '12' в качестве ввода? – dman2306
@ dman Хорошая точка. Я должен был уточнить, что у меня есть логика (не показана на фрагменте), которая гарантирует, что вход и маска имеют одинаковую длину. –