0

私は現在、NFC タグを読み取り、タグのテキストを文字列配列に対して検索して、そこにあるかどうかを確認するアプリケーションを作成しています。タグが大文字と小文字を区別する正しい例、「test」ではなく「Test」の場合に機能します。うまくいかなかったさまざまな方法を試しました。誰かが私のコードを見て、どれが私にとって最良の解決策であるかを見てください。

関連するコードは次のとおりです。

String[] dd;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    dd = getResources().getStringArray(R.array.device_description);

}

@Override
    protected void onPostExecute(String result) {
        if (result != null) {
            if(Arrays.asList(dd).contains(result)) {
            Vibrator v = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
            v.vibrate(800);
            //mText.setText("Read content: " + result);
            Intent newIntent = new Intent(getApplicationContext(), TabsTest.class);
            Bundle bundle1 = new Bundle();
            bundle1.putString("key", result);
            newIntent.putExtras(bundle1);
            startActivity(newIntent);
            Toast.makeText(getApplicationContext(), "NFC tag written successfully!", Toast.LENGTH_SHORT).show();
            }
            else{
                Toast.makeText(getApplicationContext(), result + " is not in the device description!", Toast.LENGTH_SHORT).show();
            }
        }
    }
4

3 に答える 3

2

単純な配列検索でそれを行うことができます:

public static boolean doesArrayContain(String[] array, String text) {
    for (String element : array)
        if(element != null && element.equalsIgnoreCase(text)) {
             return true;
        }
    }
    return false;
}

そして、次のように呼び出すことができます:

doesContain(dd, result);
于 2013-07-23T08:29:49.877 に答える
0

これを実現するためのネイティブな方法はありません。このようなことを試すことができます。

public static boolean ContainsCaseInsensitive(ArrayList<String> searchList, String searchTerm)
{
    for (String item : searchList)
    {
        if (item.equalsIgnoreCase(searchTerm)) 
            return true;
    }
    return false;
}
于 2013-07-23T08:30:04.103 に答える
-1

大文字と小文字を区別せずに、配列内で検索する前に単語の最初の文字を大文字にしようとすると、解決策が見つかる可能性があります。

于 2013-07-23T08:29:43.720 に答える