java - 开关中的计算案例语句(java)
问题描述
我一直在问自己这个问题,这是一个基本的问题,但我从来没有能够以任何其他方式做到这一点
目标else if
是在代码中消除
我实际上有这个:
String contentType = parser.getMimeMessage().getContentType().toLowerCase();
//contentType can be for example: "text/a; charset=us-ascii"
String content = parser.getPlainContent();
if (contentType.indexOf("text/a") > 0) {
processTextA(content);
} else if (contentType.indexOf("text/b") > 0) {
processTextB(content);
} else if (contentType.indexOf("text/c") > 0) {
processTextC(content);
}
我想做的是与此类似的事情:
String contentType = parser.getMimeMessage().getContentType().toLowerCase();
//contentType can be for example: "text/a; charset=us-ascii"
String content = parser.getPlainContent();
switch (contentType) {
case (contentType.indexOf("text/a") > 0):
processTextA(content);
break;
case (contentType.indexOf("text/b") > 0):
processTextB(content);
break;
case (contentType.indexOf("text/c") > 0):
processTextC(content);
break;
}
有没有办法实现类似的东西?
在示例中,我放了 3 else if
,但实际情况是,我有大约 20 个 else if
一个在另一个后面
编辑
contentType 可以是text/a; charset=us-ascii
,但是,它也可以是charset=us-ascii; text/a;
我不能相信发件人符合任何规范,因为它是公司之间的私有通信协议,因此split
无法使用
我举了一个例子,但问题是需要计算案例陈述
解决方案
对于初学者,我会使用:
contentType.contains("text/a")
代替:
contentType.indexOf("text/a") > 0
如果我对您的理解正确,那么您的内容中可能只有一个(通过contentType
您使用而不是MimeMessage
的事实推断出)。您可以简单地拆分by以获得所需的字符串部分。然后,您可以在字符串上切换大小写。像这样的东西:else if
if
contentType
;
String contentType = parser.getMimeMessage().getContentType().toLowerCase();
//contentType can be for example: "text/a; charset=us-ascii"
String content = parser.getPlainContent();
String contentTypeSplitted = contentType.split(";")[0];
switch (contentTypeSplitted) {
case ("text/a"):
processTextA(content);
break;
case ("text/b"):
processTextB(content);
break;
case ("text/c"):
processTextC(content);
break;
}