首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EDIFACT宏(可读消息结构)

EDIFACT宏(可读消息结构)
EN

Stack Overflow用户
提问于 2009-12-08 15:35:24
回答 3查看 504关注 0票数 1

我在EDI领域工作,希望在EDIFACT宏中得到一些帮助,使EDIFACT文件更具可读性。

消息看起来像这样:

代码语言:javascript
复制
data'data'data'data'

我想让宏将结构转换为:

代码语言:javascript
复制
data'
data'
data'
data'

请让我知道怎么做。提前感谢!

BR Jonas

EN

回答 3

Stack Overflow用户

发布于 2009-12-08 23:54:48

如果您只想以更具可读性的格式查看文件,请尝试下载Softshare EDI Notepad。这是一个非常好的工具,它支持X12、EDIFACT和TRADACOMS标准,而且是免费的。

票数 2
EN

Stack Overflow用户

发布于 2015-12-17 11:12:07

在VIM中替换(假设正在使用用于in字符集的标准EDIFACT分隔符/转义字符):

代码语言:javascript
复制
:s/\([^?]'\)\(.\)/\1\r\2/g

分解正则表达式:

\([^?]'\) -搜索出现在除? (标准转义字符)之外的任何字符之后的',并捕获这两个字符作为第一个原子。这是每个段的最后两个字符。

\(.\) -捕获段终止符后面的任何单个字符(即如果段终止符已经在行尾,则不匹配)

然后将此行上的所有匹配项替换为段终止符和下一段的开头之间的新行。

否则,你可能会得到这样的结果:

代码语言:javascript
复制
...
FTX+AAR+++FORWARDING?: Freight under Vendor?'
s care.'
NAD+BY+9312345123452'
CTA+PD+0001:Terence Trent D?'
Arby'
...

而不是这样:

代码语言:javascript
复制
...
FTX+AAR+++FORWARDING?: Freight under Vendor?'s care .'
NAD+BY+9312345123452'
CTA+PD+0001:Terence Trent D?'Arby'
...
票数 2
EN

Stack Overflow用户

发布于 2010-12-07 19:17:07

这就是你要找的东西吗?

代码语言:javascript
复制
Option Explicit

Dim stmOutput: Set stmOutput = CreateObject("ADODB.Stream")
stmOutput.Open
stmOutput.Type = 2 'adTypeText
stmOutput.Charset = "us-ascii"

Dim stm: Set stm = CreateObject("ADODB.Stream")
stm.Type = 1 'adTypeBinary
stm.Open
stm.LoadFromFile "EDIFACT.txt"

stm.Position = 0
stm.Type = 2 'adTypeText
stm.Charset = "us-ascii"

Dim c: c = ""
Do Until stm.EOS
  c = stm.ReadText(1)
  Select Case c
    Case Chr(39)
      stmOutput.WriteText c & vbCrLf
    Case Else
      stmOutput.WriteText c
  End Select
Loop


stm.Close
Set stm = Nothing

stmOutput.SaveToFile "EDIFACT.with-CRLF.txt"
stmOutput.Close
Set stmOutput = Nothing

WScript.Echo "Done."
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1865275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档