0

ある文書管理システムから別のシステムにデータを転送中です。

古いシステムでは、置換フィールドを挿入するためのブックマーク ボタンがありました。新しいシステムで機能するように、置換フィールドの構文を置き換える必要があります (私が抱えている問題ではありません)。

古いRTF

{\rtf1\ansi\deflang1033\ftnbj\uc1\deff1
{\fonttbl{\f0 \froman \fcharset0 Times New Roman;}{\f1 \fswiss Arial;}}
{\colortbl ;\red255\green255\blue255 ;\red0\green0\blue0 ;}
{\stylesheet{\f1\fs20\cf2\cb1\ulc2 Normal;}{\cs1\cf2\cb1\ulc2 Default Paragraph Font;}}
{\*\revtbl{Unknown;}}
\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\headery720\footery0\deftab720\formshade\aendnotes\aftnnrlc\pgbrdrhead\pgbrdrfoot
\sectd\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1440\headery720\footery0\sbkpage\pgncont\pgndec
\plain\plain\f1\fs20\ql\plain\f1\fs20 TEST\lang1033\f1  {\field\fldlock{\*\fldinst MERGEFIELD ID}{\fldrslt}} TEST\plain\f1\fs20\par}

古いシステムで印刷されるもの:

テスト {ID} テスト

印刷{ID}時に正しい ID 番号に置き換えられます。

しかし、ここに私の問題がありますワードパッドでRTFを開くと、次のようになります

テスト テスト

RTFを保存すると、次のようになります

{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss Arial;}}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\f0\fs20 TEST  TEST\par
}

他のほとんどのメタデータは本当に気にしませんが、{ID}. MSDN を見るとわかることから、不正な形式についての注意事項があり\field\fldlock{\*\fldinst MERGEFIELD ID}{\fldrslt}ます。

フィールドタグに一致する正規表現を記述してそれらを取り除くだけですか、それともより良い解決策がありますか?

編集

これは Word で RTF を開いた場合にも発生しますが、ここに投稿するにはファイルが長すぎます

4

1 に答える 1

1

私は正規表現を使用することになりました。興味がある人は、ここにパターンがあります

\{(?:\s*\\\*)?\s*\\field\s*\\fldlock\s*\{\s*\\\*\s*\\fldinst\s*MERGEFIELD\s*(\\.*?)?([\w\[\]]+)(\s+\w+)?(\s*\\.*?)?\s*\}(?:\s*\{\s*\\fldrslt\s*\})?\s*\}
于 2011-06-26T01:59:32.580 に答える