2016-11-28 9 views
2

私は、ユーザーが単語に置き換えしたいものは何でもして構成されたこの文の単語を置き換えるプログラムを作成しようとしている:replaceAllを使用して複数形、大文字、句読点を無視しますか?

「アヒルはハッピーアヒルを踊るアヒルでquacked悲しいです。!アヒル! "

しかし、問題は、私は、私が現在持っている

首都、複数形、句読点(アヒル、アヒル、カモ!アヒル!,など)と鴨のバージョンを交換する方法がわからないでいますこのバージョンだけど、それは "ダック"を置き換えるものです、私は他のバリエーションを行う方法がわかりません。

public static void main(String[] args) { 
    Scanner keyboard = new Scanner(System.in); 

    String story = "The duck quacked at the ducks dancing. Happy ducks! Sad Ducks!"; 

    System.out.println("What word do you want replaced?"); 
    String replaceWord = keyboard.nextLine(); 

    story = story.replaceAll("\\bduck\\b", replaceWord); 

    System.out.println(story); 
} 
+0

あなたのプログラムのロジックはちょっと見えますが、あなたは「あなたは何の言葉を置き換えたいですか?」と聞いてきます。 2つの質問* "あなたは何の言葉に置き換えたいですか?"と答え、* "どの言葉が[単語]を置き換えるべきなの?" –

答えて

1

複数形、大文字、句読点を無視するreplaceAllを使用していますか?

パターンを囲むことによってすでに句読点を管理しています。\\b。大文字を無視する

(ケースを無視する)、あなたはこのように、(?i)でパターンを前に付けることができます。

story = story.replaceAll("(?i)\\bduck\\b", replaceWord); 

を複数形を処理するために...それは、特定の言語、および一般的に非常に不規則です。 そのようなものを処理したい場合は、単数形と複数形の辞書が必要です。それでも例外的な言葉の誤った否定があるかもしれません。

+0

ありがとうございました!私が複数形をしたいと思ったら、それらの版を扱うために複数のreplaceAllを持つことができると思いますか?私は途中でJavaを使用しています –

+0

複数形を扱うための完璧なソリューションはありません。しかし、最も一般的な場合には、複数の 'replaceAll'を使うことができます。 – janos

関連する問題