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);を変更します。to .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 に答える