使用String#contains()和String #indexOf()来查找日期格式逗号分隔列表中的String查找不正确的匹配项

ssk*_*ini -9 java string

我想检查dd/MM/yy以下格式列表中是否存在日期格式:

String validDateFormats = "dd/MM/yyyy,dd-MM-yyyy,MM/dd/yyyy,MM-dd-yyyy";
Run Code Online (Sandbox Code Playgroud)

以下返回true,即使我预期false(因为列表不包含格式dd/MM/yy):

System.out.println(validDateFormats.contains("dd/MM/yy"));
Run Code Online (Sandbox Code Playgroud)

以下返回0事件虽然我预期-1(因为列表不包含格式dd/MM/yy):

System.out.println(validDateFormats.indexOf("dd/MM/yy"));
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到我正在寻找的行为?

Era*_*ran 6

目前,你是不是在日期格式列表中寻找一个日期格式,你正在寻找一个日期格式String单中String包含多个逗号分隔的日期格式.

因为它String开始于"dd/MM/yyyy",包含"dd/MM/yy",contains并且indexOf找到匹配(根据您的要求,这是误报).

为了仅搜索完整日期格式(在逗号分隔列表中),您应该将输入拆分String为a List<String>,并运行包含List:

Arrays.asList(validDateFormats.split(",")).contains("dd/MM/yy")
Run Code Online (Sandbox Code Playgroud)

validDateFormats.split(",")将输入String拆分为String数组(使用逗号作为分隔符).Arrays.asList创建一个List<String>由该数组支持的数据,它允许您运行List的contains方法来搜索"dd/MM/yy"日期格式.这将按false预期返回.