5

您好,我正在开发一个文字游戏,我想检查用户输入是否为有效单词,请建议我可以在 android 中检查给定字符串的方式。

例如。String s = "asfdaf" 我想检查它是否有效。

4

6 回答 6

8

有很多可能的解决方案,其中一些如下

使用网络词典 API

https://developer.oxforddictionaries.com/

http://googlesystem.blogspot.com/2009/12/on-googles-unofficial-dictionary-api.html

http://www.dictionaryapi.com/

如果您更喜欢本地解决方案

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

class WordChecker {
    public static boolean check_for_word(String word) {
        // System.out.println(word);
        try {
            BufferedReader in = new BufferedReader(new FileReader(
                    "/usr/share/dict/american-english"));
            String str;
            while ((str = in.readLine()) != null) {
                if (str.indexOf(word) != -1) {
                    return true;
                }
            }
            in.close();
        } catch (IOException e) {
        }

        return false;
    }

    public static void main(String[] args) {
        System.out.println(check_for_word("hello"));
    }
}

这使用在所有 Linux 系统上找到的本地单词列表来检查单词

于 2012-07-23T06:32:26.803 回答
5

首先,从例如下载一个单词列表here。将其放在项目的根目录中。使用以下代码检查 a 是否String是单词列表的一部分:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

public class Dictionary
{
    private Set<String> wordsSet;

    public Dictionary() throws IOException
    {
        Path path = Paths.get("words.txt");
        byte[] readBytes = Files.readAllBytes(path);
        String wordListContents = new String(readBytes, "UTF-8");
        String[] words = wordListContents.split("\n");
        wordsSet = new HashSet<>();
        Collections.addAll(wordsSet, words);
    }

    public boolean contains(String word)
    {
        return wordsSet.contains(word);
    }
}
于 2016-04-09T16:20:03.853 回答
2

我会存储一本字典并在那里进行查找。如果该词出现在字典中,则它是有效的。

您可以在此处找到有关如何执行此操作的一些线索: Android 字典应用程序

于 2012-07-23T06:16:12.757 回答
1
zeitue 说:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

class WordChecker {
    public static boolean check_for_word(String word) {
        // System.out.println(word);
        try {
            BufferedReader in = new BufferedReader(new FileReader(
                "/usr/share/dict/american-english"));
            String str;
            while ((str = in.readLine()) != null) {
                if (str.indexOf(word) != -1) {
                    return true;
                }
            }
            in.close();
        } catch (IOException e) {
        }

        return false;
    }

    public static void main(String[] args) {
        System.out.println(check_for_word("hello"));
    }
}

但这仅适用于linux。如果你想在 Mac 上做同样的事情,改变路径

/usr/share/dict/american-english

/usr/share/dict/web2

我没有在 Windows 上尝试过,但如果有人知道下面的评论

于 2015-06-23T16:48:22.740 回答
0
if(s.equals("word from dictionary in loop"){
    //action
}

这也很好

s = s.toLowerCase();

所以无论词条“pokemon”如何

于 2012-07-23T06:16:47.883 回答
-1

您可以尝试此代码进行基本验证

import java.util.Scanner;

public class InputValidation {

    public static void main(String[] args) {
        String input;
        try {
            System.out.println("Enter the input");
            Scanner s = new  Scanner(System.in);

            input = s.next();
            if(input.matches(".*\\d.*")){
                System.out.println(" Contains digit only");
            } else{
                System.out.println(" Only String/words found");
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }

}
于 2015-10-08T14:05:04.930 回答