Java 是否有一种更健壮的方法来实现依赖于通配符的字符串值的程序流?
在我的程序中,用户可以传递4个可能的日期。3月31日、6月30日、9月30日和12月31日。 然而,用户可以请求任何年份的数据。例如,他们可以要求6/30/15、6/30/88或6/30/16 然而,我的程序只能采用两种可能的流程。规则很简单,如下所示: 如果请求的日期以3/31或9/30开始,则采用flow#1 如果请求的日期以6/30或12/31开始,则采用flow#2 我本来可以硬编码的,但由于涉及多年,我们不能这样做。另外,我知道我们不能将正则表达式与switch语句一起使用 我的代码: 我编写了以下代码,其中我首先将变量reportDate转换为字符串。然后,我使用if语句来确定传递的日期是“6/30/*”还是“12/31”。如果是,我将在if条件中添加一个方法来处理该日期。在else部分,我将假设传递的日期必须是“3/31/”或“9/30/”Java 是否有一种更健壮的方法来实现依赖于通配符的字符串值的程序流?,java,Java,在我的程序中,用户可以传递4个可能的日期。3月31日、6月30日、9月30日和12月31日。 然而,用户可以请求任何年份的数据。例如,他们可以要求6/30/15、6/30/88或6/30/16 然而,我的程序只能采用两种可能的流程。规则很简单,如下所示: 如果请求的日期以3/31或9/30开始,则采用flow#1 如果请求的日期以6/30或12/31开始,则采用flow#2 我本来可以硬编码的,但由于涉及多年,我们不能这样做。另外,我知道我们不能将正则表达式与switch语句一起使用 我的代码:
我对这段代码如何假设流#1不太满意,这取决于它是否在if条件下找到匹配项。必须有更好的方法来实现这一点。理想情况下,我希望这样做,它只接受来自4个场景(季度)的日期我提到过。有人能帮我把这段代码变得更健壮吗?我觉得这段代码在这一点上是业余的。谢谢。我学到了两个技巧:
if (requestedDate.startsWith("6/30/") | requestedDate.startsWith("12/31/")) {
如果,则使用
else,同时使用requestedDate.matches(((6/30 | 12/31)/.*)
。
if (requestedDate.startsWith("6/30/") | requestedDate.startsWith("12/31/")) {