2013-03-23 49 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; 
    } 
相關問題