亲爱的,我会从列表中删除包含日期的字符串。 例如:必须删除“1990年代音乐团体”。
我可以在java中执行此操作吗?
答案 0 :(得分:2)
正则表达式\d{4}
可能就足够了 - 它将匹配包含4个后续数字的所有字符串。您可能还有一些更具体的案例,例如19\d{2}|20\d{2}
答案 1 :(得分:1)
如果您使用YYYY
日期格式,则正则表达式^\d{4}
应适用于字符串开头的任何日期。
String str = "1990s music groups";
boolean shouldDelete = str.matches("^\d{4}");
if (shouldDelete) {
// Delete string
}
如果您想在字符串的任何部分匹配日期,只需删除前导^
。
答案 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;
使用toRemove列表来阻止java.util.ConcurrentModificationException
答案 3 :(得分: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";
}
}