gpt4 book ai didi

java - Java 中迭代从 'One' String 到 'Another' String 的字符串列表

转载 作者:行者123 更新时间:2023-12-01 20:22:29 24 4
gpt4 key购买 nike

我正在尝试遍历 Java 中的字符串列表。我的列表包括:

["DataFileDownload/FD/722066/71493/2016/12/30/untitled-1.aux","DataFileDownload/FD/722066/71493/2016/12/31/untitled-2.aux","DataFileDownload/FD/722066/71493/2017/01/01/untitled-3.aux","DataFileDownload/FD/722066/71493/2016/01/02/untitled-4.aux"]

我正在从用户那里读取日期:

SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
Date fromDate = fmt.parse("2016-12-30");
Date toDate = fmt.parse("2017-01-02");
Calendar fromCal = Calendar.getInstance();
fromCal.setTime(fromDate);
String fromYear = String.valueOf(fromCal.get(Calendar.YEAR));
String fromMonth = String.valueOf(fromCal.get(Calendar.MONTH)+1);
String fromDay = String.valueOf(fromCal.get(Calendar.DAY_OF_MONTH));
Calendar toCal = Calendar.getInstance();
toCal.setTime(toDate);
String toYear = String.valueOf(toCal.get(Calendar.YEAR));
String toMonth = String.valueOf(toCal.get(Calendar.MONTH)+1);
String toDay = String.valueOf(toCal.get(Calendar.DAY_OF_MONTH));

如果我想提取日期范围内的字符串:2016年12月30日到2017年1月1日,即

"DataFileDownload/FD/722066/71493/2016/12/30/untitled-1.aux","DataFileDownload/FD/722066/71493/2016/12/31/untitled-2.aux","DataFileDownload/FD/722066/71493/2017/01/01/untitled-3.aux"

我正在使用以下循环:-

for(String s : NameList){
if((s.equals(fromYear) && s.equals(fromMonth) && s.equals(fromDay)) == true){
while((s.equals(toYear) && s.equals(toMonth) && s.equals(toDay)) != true){
System.out.println(s);
}
System.out.println(s);
}

我没有得到任何结果。

但是当我尝试这个时:

       for(String s : objectNameList){
if((s.contains(fromYear) && s.contains(fromMonth) && s.contains(fromDay))){
System.out.println(s);
}
}

我只得到:

"DataFileDownload/FD/722066/71493/2016/12/30/untitled-1.aux"

有人可以告诉我如何改善我的循环条件吗?

提前致谢!

最佳答案

在列表中逐字符串并使用正则表达式提取日期,如下所示:

private static String getDate(String str) {
Pattern regex = Pattern.compile("\\.*(?<date>([0-9]{4}\\/[0-9]{2}\\/[0-9]{2}))");
Matcher matcher = regex.matcher(str);
boolean success = matcher.find();
return (success ? matcher.group("date") : null);
}

// Example:
String dateStr = getDate("DataFileDownload/FD/722066/71493/2016/12/30/untitled-1.aux");

将其保存为Date对象:

SimpleDateFormat fmt = new SimpleDateFormat("yyyy/MM/dd");
Date date = fmt.parse(dateStr);

然后,读取用户输入的日期并将其保存为 Date 对象。

然后,您可以使用以下方法比较用户日期和列表中的日期:

java.util.Date.before(Date when);
java.util.Date.after(Date when);

比解析所有日期并使用字符串要容易得多。

关于java - Java 中迭代从 'One' String 到 'Another' String 的字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44426581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com