このような文字列の行を入力として取得します。入力は、から来る文字列です
theObjects.Runstate;
各 @VAR;****;@ENDVAR; ループ内の 1 つの Line と 1 つのステップを表します。
@VAR;Variable=Speed;Value=Fast;Op==;@ENDVAR;@VAR;Variable=Fabricator;Value=Freescale;Op==;@ENDVAR;
@VAR、@ENDVAR、Op== などの不要なフィールドを削除するために分割しました。最適な出力は次のようになります。
Speed = Fast;
Fabricator = Freescale; and so on.
@VAR と @ENDVAR を切り取ることができます。「Op==」を切り取ることはそれほど難しいことではないので、それは質問の主な焦点ではありません。今の私の最大の懸念は、出力をテキストファイルとして印刷したいということです。配列を印刷するには、それをループする必要があります。しかし、すべての反復で、新しい行を取得すると、現在分割されている文字列で配列を上書きします。Inputfile の最後の行は空の文字列だと思うので、取得した出力は単なる空のテキスト ファイルです。誰かが私を助けてくれたらいいのに。
string[] w;
Textwriter tw2;
foreach (EA.Element theObjects in myPackageObject.Elements)
{
theObjects.Type = "Object";
foreach (EA.Element theElements in PackageHW.Elements)
{
if (theObjects.ClassfierID == theElements.ElementID)
{
t = theObjects.RunState;
w = t.Replace("@ENDVAR;", "@VAR;").Replace("@VAR;", ";").Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string s in w)
{
tw2.WriteLine(s);
}
}
}
}