Java - 比使用 Ifs 和重复函数更好的方法 - DateRelated
Java - Better way then using Ifs and repeating functions - DateRelated
我创建了一个函数来检查我的日期字符串中包含的月份,这样我就可以将它用于多种日期格式。但是我使用了很多 ifs 并重复了 .contains 函数。有更好的方法吗?
另外,我的日期格式为工作日(字符串)、月(字符串)日(int- XX)、年(Int - XXXX)。例如1965 年 6 月 27 日,星期日。到目前为止,我还没有使用内置函数。
public static int CheckMonth(String s){
String month = s.toLowerCase();
if(month.contains("january")){return 1;}
else if(month.contains("febuary")){return 2;}
else if(month.contains("march")){return 3;}
else if(month.contains("april")){return 4;}
else if(month.contains("may")){return 5;}
else if(month.contains("june")){return 6;}
else if(month.contains("july")){return 7;}
else if(month.contains("august")){return 8;}
else if(month.contains("september")){return 9;}
else if(month.contains("october")){return 10;}
else if(month.contains("november")){return 11;}
else if(month.contains("december")){return 12;}
else {return -1;}
}
您可以使用循环。例如,
// 'lookup'
static String[] monthNames = {"january", .., "december"};
// in method
for (var i = 0; i < months.length; i++) {
if (monthName.contains(monthNames[i])) {
return i + 1; // because 0..11 indices in array
}
}
// do something if no matching month was found
虽然如果尝试 "NLP" 约会,我确定有现有的图书馆..
对于您想做的事情,可以使用枚举来存储文本和数字。例如:
public enum Month {
JANUARY("january", 1), FEBRUARY("february", 2) ... DECEMBER("december", 12);
private final String string;
private final int number;
private Month(String string, int number) {
this.string = string;
this.number = number;
}
public int getMonthNumber(String string) {
for(Month month : Month.values()) {
if(string.contains(this.string))
return month.number
}
return -1;
}
}
我创建了一个函数来检查我的日期字符串中包含的月份,这样我就可以将它用于多种日期格式。但是我使用了很多 ifs 并重复了 .contains 函数。有更好的方法吗?
另外,我的日期格式为工作日(字符串)、月(字符串)日(int- XX)、年(Int - XXXX)。例如1965 年 6 月 27 日,星期日。到目前为止,我还没有使用内置函数。
public static int CheckMonth(String s){
String month = s.toLowerCase();
if(month.contains("january")){return 1;}
else if(month.contains("febuary")){return 2;}
else if(month.contains("march")){return 3;}
else if(month.contains("april")){return 4;}
else if(month.contains("may")){return 5;}
else if(month.contains("june")){return 6;}
else if(month.contains("july")){return 7;}
else if(month.contains("august")){return 8;}
else if(month.contains("september")){return 9;}
else if(month.contains("october")){return 10;}
else if(month.contains("november")){return 11;}
else if(month.contains("december")){return 12;}
else {return -1;}
}
您可以使用循环。例如,
// 'lookup'
static String[] monthNames = {"january", .., "december"};
// in method
for (var i = 0; i < months.length; i++) {
if (monthName.contains(monthNames[i])) {
return i + 1; // because 0..11 indices in array
}
}
// do something if no matching month was found
虽然如果尝试 "NLP" 约会,我确定有现有的图书馆..
对于您想做的事情,可以使用枚举来存储文本和数字。例如:
public enum Month {
JANUARY("january", 1), FEBRUARY("february", 2) ... DECEMBER("december", 12);
private final String string;
private final int number;
private Month(String string, int number) {
this.string = string;
this.number = number;
}
public int getMonthNumber(String string) {
for(Month month : Month.values()) {
if(string.contains(this.string))
return month.number
}
return -1;
}
}