Как вырезать указанные слова из строки - PullRequest
5 голосов
/ 05 октября 2010

Существует список запрещенных слов (или строк, чтобы быть более общим) и другой список, скажем, по почте пользователей.Я хотел бы удалить все запрещенные слова из всех писем.

Тривиальный пример:

foreach(string word in wordsList)
{
   foreach(string mail in mailList)
   {
      mail.Replace(word,String.Empty);
   }
}

Как я могу улучшить этот алгоритм?


Спасибо за советы.Я проголосовал за несколько ответов, но не отметил ни одного как ответ, так как это было больше похоже на обсуждение, чем на решение.Некоторые люди пропустили запрещенные слова с плохими словами.В моем случае мне не нужно беспокоиться о том, чтобы распознать «sh1t» или что-то в этом роде.

Ответы [ 12 ]

0 голосов
/ 05 октября 2010

Разве не было бы проще (и более эффективно) просто отредактировать их, изменив все их символы на * или что-то еще? Таким образом, нет необходимости изменять размер или перемещать большую строку, и получатели становятся более осведомленными о том, что произошло, вместо того, чтобы получать бессмысленные предложения с пропущенными словами.

0 голосов
/ 05 октября 2010

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

"\bBADWORD\b"

Кроме того, вы можете перебирать mailList снаружи и список слов во внутреннем цикле.

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