您好,我正在开发一个文字游戏,我想检查用户输入是否为有效单词,请建议我可以在 android 中检查给定字符串的方式。
例如。String s = "asfdaf" 我想检查它是否有效。
您好,我正在开发一个文字游戏,我想检查用户输入是否为有效单词,请建议我可以在 android 中检查给定字符串的方式。
例如。String s = "asfdaf" 我想检查它是否有效。
有很多可能的解决方案,其中一些如下
使用网络词典 API
https://developer.oxforddictionaries.com/
http://googlesystem.blogspot.com/2009/12/on-googles-unofficial-dictionary-api.html
如果您更喜欢本地解决方案
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 系统上找到的本地单词列表来检查单词
首先,从例如下载一个单词列表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);
}
}
我会存储一本字典并在那里进行查找。如果该词出现在字典中,则它是有效的。
您可以在此处找到有关如何执行此操作的一些线索: Android 字典应用程序
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 上尝试过,但如果有人知道下面的评论
if(s.equals("word from dictionary in loop"){
//action
}
这也很好
s = s.toLowerCase();
所以无论词条“pokemon”如何
您可以尝试此代码进行基本验证
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();
}
}
}