我目前正在创建一个应用程序,该应用程序将读取NFC标签,并针对字符串数组查找标签文本以查看它是否存在。如果标签区分大小写正确,则可行。 '测试',而不是'测试'。我尝试了各种没有效果的方法。有人请看我的代码,看看哪个是我最好的解决方案。
以下是相关代码:
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();
}
}
}
答案 0 :(得分: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);
答案 1 :(得分:0)
没有本地方法可以实现这一目标。你可以尝试这样的事情。
public static boolean ContainsCaseInsensitive(ArrayList<String> searchList, String searchTerm)
{
for (String item : searchList)
{
if (item.equalsIgnoreCase(searchTerm))
return true;
}
return false;
}
答案 2 :(得分:-1)
如果你不做一些不区分大小写的事情,可以找到解决方案,在数组中查找之前尝试高出任何单词的第一个字母。