Как заменить каждые три символа в массиве?
подскажите, пожалуйста, стоит такая задача, заменить каждое пятое слово в предложении словом BUZZ(это у меня вроде как получилось),а так же заменить каждую третью букву в в каждом слове, словом FIZZ(вот тут задача). Пробовал и через регулярные выражения, но ничего не могу сделать с пробелами, слово FIZZ заменяет так же и пробелы в предложении,сделал проверку на пробелы,но все равно каждую третью букву не могу получить. Буду рад любому совету.
const text = "Привет иногда бывает грустно но не всегда конечно".toLowerCase();
class FizzBuzzDetector {
constructor(article) {
this.article = article;
}
getOverlappings() {
//Converting to an symbol array
let convertToSymbolArray = this.article.split("");
// вот тут проблема
for (let i = 3-1; i < convertToSymbolArray.length - 1; i += 3) {
if (convertToSymbolArray[i] == " ") {
convertToSymbolArray[i] = " ";
} else {
convertToSymbolArray[i] = "FIZZ";
}
}
//
//Converting to string
let convertToString = convertToSymbolArray.join("");
//Converting to word array
let convertToWordArray = convertToString.split(" ");
for (let i = 5 - 1; i < convertToWordArray.length - 1; i += 5) {
convertToWordArray[i] = "BUZZ";
}
return convertToWordArray.join(" ");
}
}
const filterArticle = new FizzBuzzDetector(text);
console.log(filterArticle.getOverlappings());
Хочу получить вот такой результат:
прFIZZвеFIZZ инFIZZгдFIZZ быFIZZаеFIZZ грFIZZстFIZZо BUZZ не всFIZZгдFIZZ коFIZZечFIZZо
Ответы (1 шт):
Основная проблема кода в вопросе в том, что замена буквы и слова разделены между собой.
Однако их можно объединить в один проход:
- разбить строку по словам
- каждое пятое заменить на BUZZ
- остальным пройтись по буквам
- каждую третью заменить на FIZZ
const text = "Привет иногда бывает грустно но не всегда конечно".toLowerCase();
class FizzBuzzDetector {
constructor(article) {
this.article = article;
}
getOverlappings() {
//Converting to word array
let convertToWordArray = this.article.split(" ");
for (let i = 0; i < convertToWordArray.length; i++) { // идем по словам
if (i > 0 && i % 4 === 0) { // каждое пятое заменяем
convertToWordArray[i] = "BUZZ";
continue; // переходим к следующей итерации
}
var convertToSymbolArray = convertToWordArray[i].split(''); // разбиваем на символы
for (let i = 2; i < convertToSymbolArray.length; i += 3) {
convertToSymbolArray[i] = "FIZZ"; // меняем каждую третью букву
}
convertToWordArray[i] = convertToSymbolArray.join(''); // собираем в строку
}
return convertToWordArray.join(" ");
}
}
const filterArticle = new FizzBuzzDetector(text);
console.log(filterArticle.getOverlappings(), filterArticle.getOverlappings() == 'прFIZZвеFIZZ инFIZZгдFIZZ быFIZZаеFIZZ грFIZZстFIZZо BUZZ не всFIZZгдFIZZ коFIZZечFIZZо');