Как мне отделить строку так, чтобы "кот!"будет "кот!" - PullRequest
1 голос
/ 19 сентября 2011

Я считаю, что эта программа будет работать для большинства случаев, кроме одного. Я добавил пробелы в indexOF (), чтобы такие слова, как ламмы катрин и собачьих костюмов, были бы приняты как непрофессиональные. Единственная проблема, которую я вижу, заключается в том, что пользователь начинает строку с cat / dog / llama. КОШКА! Может показаться непрофессиональным, потому что вначале нет места, а потом нет места, есть ли команда String, чтобы распространить информацию, или я совершенно не на том пути?

import java.util.Scanner;
public class ProfanityFilter 
{

 public static void main(String[] args) 
 {

   System.out.println (" welcome to the Profanity filter billboard service ");
   System.out.println (" please enter  a potential sign that contains the words \"cat\", \"dog\" or \"llama\"" );

   Scanner keyboard = new Scanner (System.in);

   String s1 = keyboard.nextLine();

   s1 = s1.toLowerCase();

   if (s1.indexOf(" cat ")!=-1 || s1.indexOf(" dog ") !=-1 || s1.indexOf(" llama ")!=-1)

         System.out.println ("Profanity is in your Billboard");
   else
        System.out.println ("There is no profanity in your Billboard");

 }
}

Ответы [ 4 ]

4 голосов
/ 19 сентября 2011

Regex в помощь!

if (s1.matches("^.*\\b(cat|dog|llama)\\b.*$"))

Некоторое объяснение:

  • \b означает границу слова
  • (a|b|c) означает «a или b илиc "

Вы можете построить это из массива:

String[] badWords = {"cat", "dog", "llama"};
String regex = "^.*\\b(" + 
    Arrays.toString(badWords).replace(", ", "|").replace("[", "").replace("]", "") + 
    ")\\b.*$";
2 голосов
/ 19 сентября 2011

Взгляните на класс Pattern и \b, что означает границу слова.

1 голос
/ 19 сентября 2011

Вы должны использовать регулярные выражения .

0 голосов
/ 19 сентября 2011

Вы можете сделать так, чтобы это работало и для "кошек" и "лошадей, кошек и коз".

if(Regex.IsMatch(s1, @"\b(?:cat|dog|llama)\b", RegexOptions.IgnoreCase))
    System.out.println("Profanity is in your Billboard");

Хорошо, я думал, что это C #, но что-то подобное существует в Java.

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