用满足某些条件的元素填充子阵列-Java



我有一个字符串数组,例如:

String FileContent = "2017-04-03, 11:25, 2; 2017-04-02, 11:30, 8; 2017-04-03, 14:42, 9";

我要做的是提取满足特定条件的元素,假设我们需要选择给定日期的数组成员。

String[] SplittedContent = FileContent.split("\s*;\s*");
String date= "2017-04-03";
for (int i = 0; i < SplittedContent.length; i++)

            if (SplittedContent[i].contains(date))
                {
                 String [] MatchingContent = null;
                 MatchingContent[i]= SplittedContent[i];    
                } 

它给了我这个行错误:匹配content [i] = splittedContent [i];有人可以帮忙吗?

您正在尝试访问 null 的数组中的ITH元素。您需要初始化一个新列表,然后添加项目:

String FileContent = "2017-04-03, 11:25, 2; 2017-04-02, 11:30, 8; 2017-04-03, 14:42, 9";
String date= "2017-04-03";
String[] SplittedContent = FileContent.split("\s*;\s*");
List<String> MatchingContent = new ArrayList<>();
for (int i = 0; i < SplittedContent.length; i++)
    if (SplittedContent[i].contains(date))
    {
        MatchingContent.add(SplittedContent[i]);
    }
System.out.println(MatchingContent);
// => [2017-04-03, 11:25, 2, 2017-04-03, 14:42, 9]

请参阅Java Demo

请注意,检查值是否以

if (SplittedContent[i].startsWith(date))
                       ^^^^^^^^^^^^^^^^

收集比赛的另一种方法是使用正则拨号直接匹配所需的子字符串:

String FileContent = "2017-04-03, 11:25, 2; 2017-04-02, 11:30, 8; 2017-04-03, 14:42, 9";
String date= "2017-04-03";
List<String> MatchingContent = new ArrayList<>();
Matcher m = Pattern.compile(date + "[^;]+").matcher(FileContent);
while(m.find()) {
    MatchingContent.add(m.group());
}
System.out.println(MatchingContent);
// => [2017-04-03, 11:25, 2, 2017-04-03, 14:42, 9]

请参阅另一个Java演示。

[^;]+否定字符类([^...](匹配;以外的任何1 字符。

最新更新