1

私はEDI領域内で作業しており、EDIFACTファイルを読みやすくするためにEDIFACTマクロのヘルプが必要です。

メッセージは次のようになります。

data'data'data'data'

構造を次のように変換するマクロが必要です。

data'
data'
data'
data'

plsは私にこれを行う方法を教えてくれます。前もって感謝します!

BRジョナス

4

3 に答える 3

2

VIM での置換 (UNOA 文字セットの標準 EDIFACT セパレーター/エスケープ文字が使用されていると仮定):

:s/\([^?]'\)\(.\)/\1\r\2/g

正規表現の分解: - (標準のエスケープ文字)を除く任意の文字の後に発生する which を
\([^?]'\)検索し、これら 2 つの文字を最初のアトムとしてキャプチャします。これらは、各セグメントの最後の 2 文字です。- セグメント ターミネータに続く任意の 1 文字をキャプチャします (つまり、セグメント ターミネータが既に行末にある場合は一致しません)。'?
\(.\)

次に、この行のすべての一致を、セグメント ターミネータと次のセグメントの先頭の間の新しい行に置き換えます。

そうしないと、次のようになる可能性があります。

...
FTX+AAR+++FORWARDING?: Freight under Vendor?'
s care.'
NAD+BY+9312345123452'
CTA+PD+0001:Terence Trent D?'
Arby'
...

これの代わりに:

...
FTX+AAR+++FORWARDING?: Freight under Vendor?'s care .'
NAD+BY+9312345123452'
CTA+PD+0001:Terence Trent D?'Arby'
...
于 2015-12-17T03:12:07.087 に答える
2

ファイルを読みやすい形式で表示したいだけの場合は、Softshare EDI Notepadをダウンロードしてみてください。X12、EDIFACT、および TRADACOMS 標準をサポートし、無料です。

于 2009-12-08T15:54:48.457 に答える
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."
于 2010-12-07T11:17:06.523 に答える