Java 比较.txt文件和editText之间的值
我正在尝试为我的应用程序创建一个黑名单,因此用户通过editText输入的blacklist.txt文件中的任何单词都将被标记出来。我下面的代码没有做任何事情,我不知道为什么Java 比较.txt文件和editText之间的值,java,android,Java,Android,我正在尝试为我的应用程序创建一个黑名单,因此用户通过editText输入的blacklist.txt文件中的任何单词都将被标记出来。我下面的代码没有做任何事情,我不知道为什么 private String comparevalue() { BufferedReader buffered = null; String val = editbox.getText().toString(); InputStream inputStream =getReso
private String comparevalue() {
BufferedReader buffered = null;
String val = editbox.getText().toString();
InputStream inputStream =getResources().openRawResource(R.raw.blacklist);
buffered = new BufferedReader(new InputStreamReader(inputStream));
try {
String line = buffered.readLine();
while (line != null) {
line = buffered.readLine();
}if (val.equalsIgnoreCase(line)) {
Toast.makeText(this, "Working", Toast.LENGTH_LONG).show();
}
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this,"Not found",Toast.LENGTH_LONG).show();
**}
return buffered.toString();
}**
像这样更改代码
while (line != null) {
line = buffered.readLine();
if (val.equalsIgnoreCase(line)) {
Toast.makeText(this, "Working", Toast.LENGTH_LONG).show();
}
}
你把if放在外面了。所以你只是在比较val和null 将它放在while中,并放在buffered.readLine()之前,这样就不会忽略第一行。大概是这样的:
line = buffered.readLine();
while (line != null)
{
if (val.equalsIgnoreCase(line))
{
Toast.makeText(this, "Working", Toast.LENGTH_LONG).show();
}
line = buffered.readLine();
}
你在外面做if。因此,您只是将val与null进行比较。在这种情况下,我的editText中有一条语句而不仅仅是一个单词,如何循环遍历所有单词以检测backlist中存在的单词。如果(val.equalsIgnoreCase(line)){for(int i=0;i>val.length();i++{Toast.makeText(这个“工作”,Toast.length_LONG).show()}如果要匹配多个单词,那么最好使用像rabin carp这样的字符串匹配算法,或者看看这篇文章