有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

有什么建议吗


共 (2) 个答案

  1. # 1 楼答案

    当我们解析EDIFACTs时,我们使用如下正则表达式将EDIFACTs拆分为段、元素和组件:

    String edi = "UNH+..."; // full edifact as string here
    
    // split EDIFACT string into segments
    String[] segments = edi.split("(?<!\?)'");
    
    // loop through segments to find one beginning with DTM+
    // lets assume its 3rd segment in array
    String dtmSegment = segments[2];
    
    // split DTM segment to get its elements
    String[] dtmElements = dtmSegment.split("(?<!\?)\+");
    
    // get date, time, period element
    String dtmElement = dtmElements[1];
    
    // split dtmElement to get date/time/period components
    String[] dtmComponents = dtmElement.split("(?<!\?):");
    
    // get date/time/period component value
    String deliveryDate = dtmComponents[1];
    

    注意:当完整的EDIFACT被拆分为段时,段分隔符'将从每个段字符串中删除。当将元素和组件拆分为单个字符串时,同样适用