我在文本上有此行:
myData = myData.Replace(".jpg", ">JPG<");
myData = myData.Replace(".gif", ">GIF<");
myData = myData.Replace(".png", ">PNG<");
myData = myData.Replace(".tif", ">TIF<");
在我的C#程序上,我不会一个一个一个cicle的cicle:
for (int l=0; w<listWithLines.Count;l++)
{
// MY LINE
// listWithLines[l]
}
如果您的意图只是要替换字符串(如示例行中),并且您能够修改文本列表,最好的方法是仅提供替换令牌列表:
.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]);
}
我不认为您可以这样做,您可以使用CodeProviders等从外部来源编译代码块,但是我认为您似乎只能像您一样将其放入预定义的范围中想要(范围在您的循环中),除非您可以将其加载为块并将其传递到方法(将循环)作为操作。
我不知道这种方式从文本文件中编译和运行代码行的简便方法。但是,如果您要为MyData对象提供序列化并使用XML进行序列化的方法,则可以从外部文件中读取与此类似的事情。
您可以做到这一点,但是与reflection.emit之类的事情有很多工作。很确定您也必须参加整个课程您可以使用Ironpython或其他DLR实现之一来做到这一点,但也是很多工作将其变成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);
}