问题:
使用SimpleDateFormat解析字符串时间,格式正确的前提下,可能报错,不能解析.
原因一:
目前这个是我所碰到的一个问题,分析后发现,字符串中包含了不可打印字符,例如\u200e
(左至右符号),即控制字符,详情请google.
原因一解决方案:
原因得到之后,解决方案就是去除这些控制字符.部分控制字符解决代码如下
private final static String REGREX = "[\\u200b-\\u200f]|[\\u200e-\\u200f]|[\\u202a-\\u202e]|[\\u2066-\\u2069]|\ufeff|\u06ec";
private final static String BLANK = "";
public static String replaceUnPrintCharacter(String source) {
return replaceUnPrintCharacter(source, REGREX, null);
}
public static String replaceUnPrintCharacter(String source, String regex, String replacement) {
if (regex == null) {
regex = REGREX;
}
if (replacement == null) {
replacement = BLANK;
}
Pattern compile = Pattern.compile(regex);
Matcher matcher = compile.matcher(source);
if (matcher.find()) {
return matcher.replaceAll(replacement);
}
return source;
}
致敬:
若有其他解析问题和解决方案,欢迎评论补充…