我有一个字符串数组,例如:
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 字符。