java如何从Edifact d96a读取交货日期。txtfile?
从中检索交货日期时遇到问题。随EDI发送的txt文件
我的客户必须有机会在一个新的环境中建立生产线。txt文件:
DTM+76:20160702:102
当他们从网站上订购物品,为以后的交货设定交货日期时
我想获取日期(在本例中为2016-07-02)并将其设置为deliveryDate变量(然后在数据库中设置)
我正在考虑使用java中的Scanner来查看文件是否包含文本“DTM:76”,然后读取行的日期部分,如Find a string (or a line) in a txt File Java。EDI是否可行/有效,或者是否有更好的方法
对我来说,最好的解决方案是:
if (DTM+76:YYYYMMDD::102 exists)
{
//set the deliveryDate by getting only YYYYMMDD from DTM:76:20160702:102
deliveryDate= get..("20160702");
}
有关EDI和交付日期的信息:http://www.gs1.org/sites/default/files/docs/eancom/ean02s4/part2/insdes/053.htm https://www.stylusstudio.com/edifact/D96A/ORDERS.htm
有什么建议吗
# 1 楼答案
当我们解析EDIFACTs时,我们使用如下正则表达式将EDIFACTs拆分为段、元素和组件:
注意:当完整的EDIFACT被拆分为段时,段分隔符
'
将从每个段字符串中删除。当将元素和组件拆分为单个字符串时,同样适用# 2 楼答案
我建议使用正则表达式的模式匹配,以匹配有效行的出现,即DTM+76:后跟有效的日期格式
见JDoc:
https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
现在,如果找到匹配项,您可以轻松获得匹配项的日期部分(尾随:char),然后将其添加到DB中