2013-03-23 50 views
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,我也会得到一个匹配。 我在这里搜索并尝试了一些描述但不起作用的不同方法。

回答

1

Change .contains(word); to .contains(“”+ word +“”);.

+0

不工作,我没有得到任何这样的字(即使存在于txt文件中)。我也尝试过.contains(“”+ word +“”)和/ b字符,它不起作用 – 2013-03-24 14:08:31

+0

那么文件中的单词是如何分开的呢?不是由空格?这个文件如何建立呢? – greenapps 2013-03-24 14:31:33

+0

该文件逐字排列,单词后面没有空格。 – 2013-03-24 14:38:44

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; 
    } 
相关问题