如何简化TextView中多值匹配的判断逻辑?
优化方案
方案一:集合循环匹配
先一次性获取文本内容,再把需要匹配的目标值存入集合,循环检查是否包含任意一项,匹配成功后直接退出循环,避免重复操作:
String text = TvC.getText().toString(); // 把要匹配的数值存入集合 Set<String> targetNums = new HashSet<>(Arrays.asList("4", "5", "6", "7", "8", "9", "10")); for (String num : targetNums) { if (text.contains(num)) { layoutcenter.setBackgroundResource(R.color.Red); break; // 找到匹配项后立即终止循环,减少无效检查 } }
方案二:正则表达式匹配
用正则一次性匹配所有目标数值,代码更简洁:
String text = TvC.getText().toString(); // 正则匹配4-9单个数字或完整的"10" if (text.matches(".*(4|5|6|7|8|9|10).*")) { layoutcenter.setBackgroundResource(R.color.Red); }
这个正则会精准匹配完整的目标值,不会把单独的"1""0"误判为"10"。
两种方案都能替代重复的if判断,后续修改目标数值时,只需调整集合或正则内容即可,维护性更强。
内容的提问来源于stack exchange,提问作者Jezdi
相关产品推荐
相关产品推荐

