-2
正直なところ、この質問をどのように行うのか分かりません。申し訳ありませんが、意味が分からない場合はここで説明しようとします。私は、ユーザーがコマンドを入力できるアプリを作っています。単語の最初の数文字を入力して、プログラムで入力したいものを予測できるようにしたいと考えています。ドキュメントリスナーのifステートメントでStringsを使用する方法
private final static String[] commands = new String[] {"help", "time", "date", "again", "weather"};
public static void predictiveText() {
commandField.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e) {
}
@Override
public void insertUpdate(DocumentEvent e) {
if (e.getOffset() + e.getLength() == e.getDocument().getLength())
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
predict(commandField);
}
});
}
@Override
public void changedUpdate(DocumentEvent e) {
}
});
}
private static void predict(JTextField field) {
String text = field.getText();
String prediction = null;
for (String color : commands) {
if (color.startsWith(text) && !color.equals(text)) {
if (prediction != null)
return;
prediction = color;
}
}
if (prediction != null) {
field.setText(prediction);
field.setCaretPosition(text.length());
field.select(text.length(), prediction.length());
}
}
唯一の問題は、この文は、コマンドの処理を扱うために、私の場合は、プログラムが使用しているが、コマンドが一致するかどうかを確認するために、配列を使用しています。
} else if (AssistantFrame.getCommand().equalsIgnoreCase("card") || AssistantFrame.getCommand().equalsIgnoreCase("playing card") || AssistantFrame.getCommand().equalsIgnoreCase("playingcard") || AssistantFrame.getCommand().toLowerCase().contains("pick a card") || AssistantFrame.getCommand().toLowerCase().contains("name a card") || AssistantFrame.getCommand().toLowerCase().contains("choose a card") || AssistantFrame.getCommand().toLowerCase().contains("pick a playing card") || AssistantFrame.getCommand().toLowerCase().contains("name a playing card") || AssistantFrame.getCommand().toLowerCase().contains("choose a playing card")) {
MiscAction.generatePlayingCard();
if文にコマンドが入力されているかどうかを確認する方法はありますか。あるいは、予測テキストと一緒に動作させながらコマンドの処理を扱う別の方法がありますか?
https://github.com/arunkumar9t2/trieこれはこれですか? –
はい、基本的には実装ですが、より簡単な実装を書いただけで、Trieデータ構造の詳細についてのリンクが見つかります。 [gist link](https://gist.github.com/mehdithe/ea1fd039abcb8ccc2505a7a64e689ed7)これは要点へのリンクです。 –