gpt4 book ai didi

java - 如何从 Edifact d96a .txt 文件中读取交货日期?

转载 作者:行者123 更新时间:2023-11-30 02:54:46 27 4
gpt4 key购买 nike

我在从通过 EDI 发送的 .txt 文件检索交货日期时遇到问题。

我的客户有机会在 .txt 文件中设置该行:

'DTM+76:20160702:102

当他们从网站订购商品时,为将来的交货设置交货日期。

我想获取日期(在本例中为 2016-07-02)并将其设置为 DeliveryDate 变量(然后将其设置在数据库中)。

我正在考虑在java中使用扫描仪来查看文件是否包含文本“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

有什么建议吗?

最佳答案

当我们解析 EDIFACT 时,我们使用正则表达式将 EDIFACT 分成段,然后是元素,然后是组件,如下所示:

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 被分割成段时,段分隔符 ' 将从每个段字符串中删除。将元素和组件拆分为单独的字符串时也是如此。

关于java - 如何从 Edifact d96a .txt 文件中读取交货日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37585921/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com