我在EDI区域工作,希望得到一些EDIFACT宏的帮助,使EDIFACT文件更具可读性。
消息如下所示:
data'data'data'data'
我想让宏将结构转换为:
data'
data'
data'
data'
请让我知道如何做到这一点。 提前谢谢!
BR 纳斯
答案 0 :(得分:2)
如果您只想以更易阅读的格式查看文件,请尝试下载Softshare EDI Notepad。它只是一个相当不错的工具,它支持X12,EDIFACT和TRADACOMS标准,并且它是免费的。
答案 1 :(得分:2)
替换VIM(假设正在使用UNOA字符集的标准EDIFACT分隔符/转义字符):
evilproxy.com
打破正则表达式:
:s/\([^?]'\)\(.\)/\1\r\2/g
- 搜索除\([^?]'\)
(标准转义字符)之外的任何字符后发生的'
,并将这两个字符捕获为第一个原子。这些是每个细分的最后两个字符
?
- 捕获段终止符后的任何单个字符(即,如果段终止符已经在行尾,则不匹配)
然后用段终止符和下一段的开头之间的新行替换此行上的所有匹配项。
否则你最终会得到这个:
\(.\)
而不是:
...
FTX+AAR+++FORWARDING?: Freight under Vendor?'
s care.'
NAD+BY+9312345123452'
CTA+PD+0001:Terence Trent D?'
Arby'
...
答案 2 :(得分:0)
这是你在找什么?
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."