我的 if
以及 else if
条件太长。有没有可能 for
或者 while
或者 switch
或者任何其他可以减少代码并使其更易于理解的函数?
除此之外,代码运行良好。
if((text.charAt(7)=='O' || text.charAt(7)=='X')
&& (text.charAt(8)=='O' || text.charAt(8)=='X')
&& (text.charAt(9)=='O' || text.charAt(9)=='X')
&& (text.charAt(10)=='O'|| text.charAt(10)=='X')
&& text.charAt(49)=='O'
&& text.charAt(50)=='O'
&& text.charAt(51)=='X')
{
ledGeneral.setBackgroundResource(R.drawable.ledverte);
}else if (text.charAt(7)=='A'
|| text.charAt(8)=='A'
|| text.charAt(9)=='A'
|| text.charAt(10)=='A'
|| text.charAt(49)=='A'
|| text.charAt(50)=='A')
{
ledGeneral.setBackgroundResource(R.drawable.ledgeneralrouge);
}else{
ledGeneral.setBackgroundResource(R.drawable.imageverte);
}
4条答案
按热度按时间p4tfgftt1#
如果要检查的索引是固定的:
{38}和{7}也被称为量词。匹配上一个标记的指定数量。例子:
[x] {1,3}将匹配1到3个x。
{3} 正好匹配3。
{3,}将匹配3个或更多。
一般来说,[x]{min,max}:将min与max x匹配,[x]{n}精确匹配nx,[x]{min,}至少匹配min x或更多。
还有圆点
.
表示匹配任何字符。所以呢.{38}
意思是匹配任意字符38次因为你的情况可以解释为:
匹配一个字符串
以任意7个字符开头(索引0-6)
和一个
O
或者X
在第7、8、9和10个指数以及从第11个到第48个索引的任何字符(38个字符)
和一个
O
第49和第50指数和一个
X
第51指数转换为正则表达式
.......
或更短.{7}
(任意字符正好7次)[OX][OX][OX][OX]
char类中指定的与索引7、8、9、10相对应的字符之一.......................................
或更短.{38}
(任意字符正好38次)紧接着就是
OOX
指数49,50,51.*
可选的在末尾添加零个或多个字符所以长版本可能是:
更短的
fkaflof62#
您可以尝试以下方法,尽管我怀疑这是否会使其更具可读性:
2fjabf4q3#
您可以创建一个辅助函数来处理:
然后调整if和else:
8wtpewkr4#
关于代码“清洁度”的问题,我建议用描述性的方法来表达。