1

代码执行时没有任何错误,但 {0} 和 {1} 不会被 String.Format 中声明的值替换

FileStream fs = new FileStream(xmlFile.FullName, FileMode.Open, FileAccess.Read);
XmlDocument doc = new XmlDocument();
doc.Load(fs);

 string docStrXml = doc.InnerXml.ToString();
 String.Format(docStrXml, newVersion.ToString(), oldVersion.ToString());

 triggerDocument.LoadXml(docStrXml);
 triggerDocument.Save(directoryPathOfNewXml + "\\" + xmlFile.Name);

保存新文件没有问题。基本上,我正在打开一个 xml 文件,并且我想在文档中插入字符串。这是初始文档(也是最后一个,因为它没有更改):

<?xml version="1.0" encoding="utf-8" ?>
<Package
    source="http://localhost/Service/Master/{0}/{1}/"
    triggerseturl="http://localhost/Service/Master/{0}/{1}/client.xml">
  <File name="client_full.xml"/>
  <File name="client_half.xml"/>
</Package>
4

3 回答 3

3

您忘记docStrXml用新值替换值:

docStrXml = String.Format(docStrXml, newVersion.ToString(), oldVersion.ToString());
于 2012-11-28T00:56:50.743 回答
3

字符串是不可变的,您必须将 string.Format 的返回值分配给另一个变量。

它将具有带有插入值的新字符串。

docStrXml = String.Format(docStrXml, newVersion.ToString(), oldVersion.ToString());
于 2012-11-28T00:58:29.277 回答
1

String.Format 方法根据传递的字符串参数 [docStrXml] 返回一个字符串,但不直接对其进行操作。您需要将返回值分配给一个变量,在这种情况下与您传递给方法的变量相同。将您的代码修改为:

docStrXml = String.Format(docStrXml, newVersion.ToString(), oldVersion.ToString());

你应该很高兴。

于 2012-11-28T01:00:34.757 回答