0

説明するのは少し難しいですが、ここに行きます:

これに少し似たデータベーステーブルがあります(この質問のために非常に単純化されています)。

_id | area_link | text1 | text2 | text3 | text4
1          1      this     is       one    example
2          1      this     is     another  example
3          2      this     is       one    example
4          2      this     is     another  example
5          2      this     is     another  example

したがって、area_link が 2 に等しいデータを検索するクエリを作成できますが、次のような配列を何らかの形で作成したいと考えています。

thisisoneexample
thisisanotherexample

しかし、それはこれにはなりません(これは単純なクエリで得られるものです):

thisisoneexample
thisisanotherexample
thisisanotherexample

データベース ヘルパー クラスでの実際のクエリの例を次に示します。

public Cursor fetchComponentSpecForArea(long areaId, String componentType, String specSaved) throws SQLException {
    Cursor mCursor =
            rmDb.query(true, DAMAGED_COMPONENTS_TABLE, new String[] {
                    AREA_LINK,
                    COMPONENT_TYPE,
                    MANUFACTURER,
                    TEXT1,
                    TEXT2,
                    TEXT3,
                    TEXT4,
                    NOTES_SPEC,
                    SPEC_SAVED}, 
                    AREA_LINK + " = " + areaId + " AND " + COMPONENT_TYPE + " = ? AND " + SPEC_SAVED + " = ?", 
                    new String[] {componentType, specSaved}, 
                    null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}

そして、メインコードでこれを呼び出す方法の例:

        final Cursor componentSpecForAreaCursor = (Cursor) rmDbHelper.fetchComponentSpecForArea(areaId, componentType, specSaved);
        if (componentSpecForAreaCursor.moveToFirst()){
            String manufacturer = RMUtilities.notEmpty(componentSpecForAreaCursor.getString(componentSpecForAreaCursor.getColumnIndex(RMDbAdapter.MANUFACTURER)), "");
            String text1 = RMUtilities.notEmpty(componentSpecForAreaCursor.getString(componentSpecForAreaCursor.getColumnIndex(RMDbAdapter.TEXT1)), "");
            String text2 = RMUtilities.notEmpty(componentSpecForAreaCursor.getString(componentSpecForAreaCursor.getColumnIndex(RMDbAdapter.TEXT2)), "");
            String text3 = RMUtilities.notEmpty(componentSpecForAreaCursor.getString(componentSpecForAreaCursor.getColumnIndex(RMDbAdapter.TEXT3)), "");
            String text4 = RMUtilities.notEmpty(componentSpecForAreaCursor.getString(componentSpecForAreaCursor.getColumnIndex(RMDbAdapter.TEXT4)), "");
            String notes_spec = RMUtilities.notEmpty(componentSpecForAreaCursor.getString(componentSpecForAreaCursor.getColumnIndex(RMDbAdapter.NOTES_SPEC)), "");
            rmDbHelper.saveDamagedComponentSpec(componentId, manufacturer, text1, text2, text3, text4, notes_spec);
        }

だから私はしなければならないと思います:

create an array,
query the database,
if cursor > 0 then go to first and:
build a string from the relevant database fields,
put this into array
build next string from the relevant database fields,
check if this matches any of entries in array if not:
put this into array

など、しかし、いくつかの助けを借りて行うことができます!! 前もって感謝します。

4

1 に答える 1

0

PatternオブジェクトとMatcherオブジェクトを使用してみてください。次に、マッチャーオブジェクトのメソッドを呼び出して、.find()必要なアクションを実行します。

これがあなたを助けることができる公式ドキュメントからのリンクです:http://developer.android.com/reference/java/util/regex/Pattern.html

于 2012-12-05T23:56:39.633 に答える