Удалить символы из строки, содержащиеся в другой строке - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь сделать скраббл на Javascript. Скажем, у меня есть переменная "rack", содержащая семь букв, и переменная "word", которая является правильным словом Engli sh, которое я только что написал. Я хочу удалить со своей стойки буквы, содержащиеся в слове. Как мне это сделать?

 let rack = "BOYCOTTS"
 let word = "BOY"
 remove(word, rack) 
 
 function remove(word, rack){ return(removed_string) } 

Это должно вернуть "COTTS" (с удаленным "BOY", но не все экземпляры B, O, Y, удаленные ... только количество экземпляров, которые появляются в целевой строке).

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Это должно сработать:

const remove= (word, rack)=>rack.replace(new RegExp('['+word+']','ig'),'');

let rack = "BOYCOTTS", word = "BOY"

console.log(remove(word,rack));
console.log(remove('toy',rack));
console.log(remove('AID',rack));

Я создаю регулярное выражение из word, окружая его [ и ] и применяя его глобально (флаг: g). Таким образом, все вхождения букв в word будут удалены из stack, когда я использую регулярное выражение в вызове . replace(regexp,'').

Применяя дополнительный флаг i, регулярное выражение создается без учета регистра, как вы можете видеть во втором вызове с word='toy'.

EDIT

ОК, если вы хотите удалить каждую букву только один раз можно так:

const remove= (word,rack)=>word.split('').reduce((a,c)=>a.replace(c,''),rack);

let rack = "BOYCOTTS", word = "BOY"

console.log(remove(word,rack));
console.log(remove('TOY',rack));
console.log(remove('AID',rack));
1 голос
/ 14 июля 2020

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

function remove(word, rack) {
  const asArr = rack.split('');
  for (let letter of word) {
    // delete the letter from the rack
    const letterIndex = asArr.indexOf(letter);
    if (letterIndex > -1) {
      asArr.splice(letterIndex, 1);
    }
  }
  
  return asArr.join('');
}

Чтобы упростить этот процесс, вы можете рассмотрите возможность хранения стойки исключительно в виде массива за кулисами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...