-5

私はテキストに次の行を持っています:

myData = myData.Replace(".jpg", ">JPG<");
myData = myData.Replace(".gif", ">GIF<");
myData = myData.Replace(".png", ">PNG<");
myData = myData.Replace(".tif", ">TIF<");

そして、私のC#プログラムでは、次のサイクルで、1つずつ:

for (int l=0; w<listWithLines.Count;l++)
{
// MY LINE
// listWithLines[l]
}
4

4 に答える 4

0

この方法でテキストファイルからコード行をコンパイルして実行する簡単な方法を私は知りません。ただし、XMLを使用してmyDataオブジェクトをシリアル化および逆シリアル化するためのメソッドを提供する場合は、外部ファイルから行を読み込んで、これと同様のことを行うことができます。

于 2012-11-07T15:59:23.753 に答える
0

CodeProviders などを使用して外部ソースからコードのブロックをコンパイルすることはできますが、必要に応じて定義済みのスコープにドロップすることはできないと思います (スコープは for ループ内にあります)。 、ブロックとしてロードし、アクションとしてメソッド (ループを実行する) に渡すことができない限り。

于 2012-11-07T15:55:24.493 に答える
0

(例の行のように) 文字列を置換するだけで、テキスト リストを変更できる場合、最良の方法は、リスト内の置換トークンのみを提供することです。

.jpg,>JPG<
.gif,>GIF<
.png,>PNG<
.tif,>TIF<

次に、C# コードを次のように変更できます。

for (int l=0; w<listWithLines.Count;l++)
{
    string[] strTokens = listWithLines[l].Split(',');
    // MY LINE
    myData = myData.Replace(strTokens[0], strTokens[1]);
}
于 2012-11-07T16:05:24.927 に答える
0

それはできるかもしれませんが、Reflection.Emit のようなものを扱うには大変な作業です。クラス全体も必要になることは間違いありません IronPython または他の DLR 実装の 1 つを使用してそれを行うこともできますが、同様にかなりの作業になるでしょう それを xml に変換します

<Replaces>
<Replace from=".jpg" to=">JPG<" />
<Replace from=".gif" to=">GIF<" />
</Replaces>

次に、次のようなことを行います

XmlDocument doc = new XmlDocument();
doc.Load("Replaces.xml")
foreach(XmlNode replaceNode in doc.DocumentElement.SelectNodes("Replaces/Replace"))
{
  myData = myData.Replace(replaceNode.Attributes["from"].Value, replaceNode.Attributes["to"].Value);
}
于 2012-11-07T16:35:35.100 に答える