0

我正在使用 txt 文件作为数据库,我想在文件的内容中搜索特定的字符串(单词),如果存在则将其添加到列表视图中。我已经设法使用上面的代码完成了大部分工作:

读取文件

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,我也会得到匹配。我在这里搜索并尝试了一些不同的方法,但没有任何效果。

4

2 回答 2

1

更改 .contains(word); 到 .contains(" " + word + " ");。

于 2013-03-24T13:24:02.850 回答
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;
    }
于 2013-03-23T20:48:33.037 回答