当前位置: 首页 > 面试题库 >

为什么java SimpleDateFormat可以解析带有额外字符的格式化文本?

柯树
2023-03-14
问题内容

我正在使用MM-dd-yyyy HH:mm:ss格式解析来自用户输入的日期字符串,并且发现12-20-2012 10:10:10 abcdexxxx也可以删除它。怎么会这样 这是我的代码:

SimpleDateFormat df = new SimpleDateFormat( "MM-dd-yyyy HH:mm:ss" );
String currColValue = "12-20-2012 10:10:10 abcdexxxx";
try{
    d=df.parse( currColValue );
}catch( ParseException e ){
    System.out.println("Error parsing date: "+e.getMessage());
}

但也不例外,将String值解析为Date。为什么?


问题答案:

根据该parse方法的Javadoc:

从给定字符串 的开头 解析文本以产生日期。 该方法可能不会使用给定字符串的整个文本。

(重点是我的)。

与上述注释的含义相反,这与宽大的解析无关。相反,只是此方法不打算使用整个字符串。如果您想验证它是否消耗了整个字符串,我想您可以设置一个ParsePosition对象并使用two-
arg重载
,然后检查ParsePosition之后是否将其解析到字符串的末尾。



 类似资料:
  • 问题内容: path = “/Volumes/Users” >>> path.lstrip(‘/Volume’) ‘s/Users’ >>> path.lstrip(‘/Volumes’) ‘Users’ >>> 我期望的输出是 问题答案: 是基于字符的,它将删除该字符串中左端的所有字符。 要验证这一点,请尝试以下操作: 由于是字符串的一部分,因此将其删除。 您需要改用切片: 或者,在Python

  • 本文向大家介绍python字符串格式化方式解析,包括了python字符串格式化方式解析的使用技巧和注意事项,需要的朋友参考一下 1.%格式符 这种格式化并不是很好,因为它很冗长并且容易导致错误,比如没有正确显示元组或字典 2.str.format() 在处理多个参数和更长的字符串时仍然可能非常冗长 3.f-Strings f-strings 是指以 f 或 F 开头的字符串,其中以 {} 包含的表

  • 我有以下两个日期: 2009年10月8日 我正在使用Jackson将日期从rest api转换为joda Datetime。 我以为模式“dd MMM.yyyy”可以工作,但“may”没有点,所以在那一点上崩溃了。 有没有解决方案,或者我必须自己编写datetime解析器? jackson中的注释是: 所以只允许有一种约会模式。

  • 问题内容: 我有类似 “&ampauml; s&amparing;”之 类的字符串 需要像这样的 “äså” 进行转换请在这里帮助我。 提前致谢 问题答案: 看一下Apache Commons库中的类。(具体方法)。

  • 问题内容: 如何用Java格式化带有前导符号的数字? 负数正确显示为带前导,但显然正数不显示为。 如何在Java中做到这一点?我当前的货币格式字符串是(是,我需要格式化正/负货币值) 问题答案: 使用负子模式,如javadoc中DecimalFormat所述。 产生(在我的法语语言环境中,空格是分组分隔符,逗号是十进制分隔符):

  • 根据DEFLATE规范(RFC 1951),文字和长度字母组合在一起,以便使用一个哈夫曼树进行解码。文字和长度字母表都是256个大符号,但组合文字/长度字母表是286个长符号,其中一个符号是块结束字符。 在组合字母表中表示的可能的256个长度符号中,只有29个,在长度符号之后的压缩数据中包含额外的位,以便在解码时读取长度的全部值。这些额外的位不被压缩,被读取为文字机器整数。 为什么不在组合字母表中