Замените символы, кроме последних 4 символов, на JavaScript

#javascript

#javascript

Вопрос:

Я работаю над проектом и хотел заменить символы, кроме последних 4 символов, на javascript. Нужна небольшая помощь, спасибо

  var string = $('div.reg-summary-rows:nth-child(5) p:nth-child(2) span.reg-summary-answers').innerHTML;
 var len = string.length;
 var sub = len - 4;
 var string2 = "*****"
 var newString = string.slice(sub); 
document.querySelector("div.reg-summary-rows:nth-child(5) p:nth-child(2) span.reg-summary-answers").innerHTML = string2 ;
 

Комментарии:

1. Может "*".repeat(string.length - 4) string.slice(-4) быть?

Ответ №1:

Что-то вроде

 const foo = '1234567890';
const limit = 4;
const head = foo.slice(0, -limit);
const tail = foo.slice(-limit);

console.log(head.replace(/./g, '*')   tail); 

Ответ №2:

Одним из возможных решений является использование функции замены String.replace() таким образом:

 const replaceAllExceptLast = (str, n) =>
{
    let token = "*";

    return str.replace(/./g, (match, offset) =>
    {
        return offset < str.length - n ?  token : match;
    });
}

console.log(replaceAllExceptLast("Hello World", 1));
console.log(replaceAllExceptLast("Hello World", 4));
console.log(replaceAllExceptLast("Hello World", 7)); 
 .as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;} 

Обратите внимание, регулярное выражение будет соответствовать каждому символу, но мы собираемся выполнить замену только в том случае, если offset соответствующий элемент удовлетворяет условию.