2012-07-03 67 views
0

我在这里问是否有任何方法将变量放在C#中的“@”字符串中。 这样在下面的代码中的id可以改变。C#字符串与[@]

 string xml = @" 
     <S> 
      <child id='1'/> 
      <child id='2'> 
      <grandchild id='3' /> 
      <grandchild id='4' /> 
      </child> 
     </S>"; 
+1

'string.Format'是你的朋友。 – zzzzBov

+0

XElement/XAttribute构造函数被设计为以类似可构造的方式工作。 – Brannon

+0

谢谢你,如果你在制作XML,我会尝试这个 –

回答

3

看看String.Format方法

var result = string.Format(@"<S> 
      <child id='{0}'/> 
      <child id='{1}'> 
      <grandchild id='{2}' /> 
      <grandchild id='{3}' /> 
      </child> 
     </S>", id1, id2, id3, id4); 
3

不能直接(C#没有插值),但你可以通过一个@ -string到string.Formatstring.Concat。 (或者,对于masochasists,Regex.Replace

+0

非常感谢 –

2

可以使用的String.format:

string.Format(@"<S> 
      <child id='{0}'/> 
      <child id='{1}'> 
      <grandchild id='3' /> 
      <grandchild id='4' /> 
      </child> 
     </S>", childId1, childId2); 
2

使用的String.format()来在运行时将值插入到字符串中。有关它的更多信息可以在MSDN找到。

string xml = string.Format(@" 
    <S> 
     <child id='{0}'/> 
     <child id='{1}'> 
     <grandchild id='{2}' /> 
     <grandchild id='{3}' /> 
     </child> 
    </S>", id1, id2, id3, id4); 

这并不是虽然创建XML,因为你必须确保你插入任何值正确转义为它的位置,但只要你严格插入数值这不应该是推荐的方式成为一个问题。

+0

这大部分看起来像从其他答案复制/粘贴,但+1无论如何指出它可能不安全 –

+0

大多数答案写在几分钟内,所以没有人真的有时间复制粘贴任何人。当我开始写我的时候,只有Ben Voigts回答,尽管它缺乏一些解释。当我完成时,其他人已经提交了答案。 –