2011-03-05 80 views

回答

1

如果您使用的是YYYY日期格式,正則表達式^\d{4}應該工作字符串開頭的任何日期。

String str = "1990s music groups"; 
boolean shouldDelete = str.matches("^\d{4}"); 
if (shouldDelete) { 
    // Delete string 
} 

如果你想匹配的字符串的任何部分之日起,只要將領先^

2

正則表達式\d{4}可能就足夠了 - 它將匹配包含4個後續數字的所有字符串。您也許可以有一些更具體的情況下,如19\d{2}|20\d{2}

0
//ArrayList<String> list = .... 
String year = "1990"; 
ArrayList<String> toRemove = new ArrayList<String>(); 
for (String str:list) { 
    if (str.matches(".*"+year+".*")) { 
     toRemove.add(str); 
    } 
} 
for (String str:toRemove) list.remove(str); 
toRemove = null; 

使用的文檔,刪除列表,以防止java.util.ConcurrentModificationException

+0

如果你想要的任何日期使用\ d {4}像Bozho建議而不是年份變量 – RedSoxFan 2011-03-05 18:10:07

0

對於更具體的年率(1970年至2029年),我用:

Pattern pattern; 
Matcher matcher; 
String errorTag = null; 
private static final String PATTERN_YEAR = "^(197\\d{1}|198\\d{1}|199\\d{1}|200\\d{1}|201\\d{1}|202\\d{1})"; 

...

if (filter.getName().contains("YYYY")){ 
    pattern = Pattern.compile(PATTERN_YEAR); 
    matcher = pattern.matcher(filter.getValue()); 
     if(!matcher.matches()){ 
      errorTag= " *** The year is invalid, review the rate"; 


    } 
}