如何从存储在原始文件夹中的文本字典文件中获取特定单词;

时间:2013-03-23 20:23:32

标签: android

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

2 个答案:

答案 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;
    }