Android如何检查Arrays.xml中字符串数组是否包含指定字符串?
如何检查Arrays.xml中的字符串数组是否包含指定内容
你碰到的问题其实很典型——getResources().getStringArray()返回的是Java原生的String数组,而原生数组本身并没有contains()方法,所以直接调用这个方法肯定会失效甚至报错。下面给你两种实用的解决思路:
方法一:将数组转为List后使用contains()
这是最简洁的方式,利用Java集合类的现成方法:
// 先获取EditText的输入内容,建议trim()去掉前后空格(避免和数组里的空格匹配问题) String userInput = yourEditText.getText().toString().trim(); // 获取字符串数组并转为List String[] languageArray = getResources().getStringArray(R.array.text_language); List<String> languageList = Arrays.asList(languageArray); // 检查是否包含目标字符串 if (languageList.contains(userInput)) { // 这里写包含时的逻辑处理 }
小提醒:Arrays.asList()生成的是固定大小的List,不能做增删操作,但用来做包含检查完全够用。如果后续需要修改列表,可以用new ArrayList<>(Arrays.asList(languageArray))来创建可修改的ArrayList。
方法二:手动循环遍历数组检查
如果不想依赖集合类,也可以自己写循环逐个比较:
String userInput = yourEditText.getText().toString().trim(); String[] languageArray = getResources().getStringArray(R.array.text_language); boolean isContained = false; for (String lang : languageArray) { // 同样注意处理空格,比如数组里的item带前导空格,这里trim后再比较 if (lang.trim().equals(userInput)) { isContained = true; break; // 找到匹配项就跳出循环,提升效率 } } if (isContained) { // 包含时的逻辑 }
另外要注意:你定义的数组item里有前导空格(比如<item> English</item>),建议要么把Arrays.xml里的空格去掉,要么在比较时对数组元素和输入内容都做trim()处理,不然会出现明明内容一样但因为空格匹配失败的情况哦。
内容的提问来源于stack exchange,提问作者user8940426
相关产品推荐
相关产品推荐

