这是我的代码。我将日期存储在日期ArrayList中,它看起来像是:[020406,020407 ...]我正在文件中搜索模式,如下所示:
c001z020102
c002z020103
...
代码:
private void printReaderContent(BufferedReader reader) throws IOException {
String line = null;
for(String tmp : dates) {
while ((line = reader.readLine()) != null) {
if (line.matches("[c]{1}[0-9]{3}[z]{1}" + tmp)) {
xmlCodes.add(line);
} else {
}
}
}
System.out.println(xmlCodes);
}
所以我在我的代码中有匹配方法,我试图添加tmp变量来组合这个模式,这样我就可以从我的文件中获取选定的结果。如果我使用标准模式,如[c] {1} [0-9] {3} [z] {1} [0-9] {2} [0-9] {2} [0-9] {2}它工作,但每次我把tmp改为空白arrayList返回:(我使用jodaTime计算之间的天数,并将其存储在日期中ArrayList:
public void countDatesBetween()
{
int days = Days.daysBetween(dataPierwsza, dataOstatnia).getDays();
for (int i = 0; i <= days; i++)
{
DateTime d = dataPierwsza.withFieldAdded(DurationFieldType.days(), i);
dates.add(d.toString("yyMMdd"));
}
}
我有一个包含多行特定模式的文件,例如:c001z040206。用户输入2个日期,如2014-06-06和2014-06-08 ---&gt; coundDatesBetween创建一个arrayList(dates.toString(&#34; yyMMdd&#34;),如下所示:[140606,140607,140608]。然后我想用这个模式搜索文件c001z,这是&#34; [ c] {1} [0-9] {3} [z] {1}&#34;并从tmp中获取选定日期,这基本上是迭代日期ArrayList。所以它应该是那样的例如:c001z140606 ---&gt;在文件中找到并返回xmlCodes String ArrayList,但它只是返回空白的arraylist。
答案 0 :(得分:0)
您的问题与line.matches()
语句中的模式无关。你需要交换内/外循环,否则你只会尝试匹配第一个日期。
private void printReaderContent(BufferedReader reader) throws IOException {
String line = null;
while ((line = reader.readLine()) != null) {
for (String tmp : dates) {
if (line.matches("[c]{1}[0-9]{3}[z]{1}" + tmp)) {
xmlCodes.add(line);
break;
}
}
}
System.out.println(xmlCodes);
}