我正在使用txt文件作为数据库,我想在文件的内容中搜索特定的字符串(word),如果存在则将其添加到listview上。我已经设法使用上面的代码实现了大部分内容:
阅读文件
public String readTxt(){
InputStream inputStream = getResources().openRawResource(R.raw.words);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int i;
try {
i = inputStream.read();
while (i != -1)
{
byteArrayOutputStream.write(i);
i = inputStream.read();
}
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return byteArrayOutputStream.toString();
尝试搜索字符串
if(readTxt().contains(word)){
addWord.add(new String(word));
问题在于我无法搜索整个单词。如果我使用上面的方法,我得到的所有内容都包含字符串的字符。例如,如果单词是LETTER,我会得到一个匹配,但如果单词是TTE,我也会得到一个匹配。 我在这里搜索并尝试了一些不同的方法,这些方法已经描述但没有任何效果。
答案 0 :(得分:1)
更改.contains(word); to .contains(“”+ word +“”);。
答案 1 :(得分:0)
使用正则表达式模式匹配器匹配整个单词。这个将一条消息分成160个字符块,但你可以很容易地修改它来找到一个“整个单词”。
protected ArrayList<String> splitMsg(SmsMessage smsMessage) {
ArrayList<String> smt;
Pattern p = Pattern.compile(".{1,160}");
Matcher regexMatcher = p.matcher(smsMessage.getMsgBody());
smt = new ArrayList<String>();
while (regexMatcher.find()) {
smt.add(regexMatcher.group());
}
return smt;
}