gpt4 book ai didi

c# - 格式字符串包含 "{"时出现 String.Format 异常

转载 作者:IT王子 更新时间:2023-10-29 04:10:16 26 4
gpt4 key购买 nike

我正在使用 VSTS 2008 + C# + .Net 2.0。执行以下语句时,String.Format 语句抛出 FormatException,有什么问题吗?

这是获取我正在使用的 template.html 的位置。我想在 template.html 中格式化这部分 m={0}。

    string template = String.Empty;
using (StreamReader textFile = new StreamReader("template.html"))
{
template = textFile.ReadToEnd();
String.Format(template, "video.wmv");
}

http://www.mediafire.com/download.php?u4myvhbmmzg

编辑 1:

这是我的 template.html 的内容,

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<!-- saved from url=(0014)about:internet -->
<head>
<title>Silverlight Project Test Page </title>

<style type="text/css">
html, body {
height: 100%;
overflow: auto;
}
body {
padding: 0;
margin: 0;
}
#silverlightControlHost {
height: 100%;
}
</style>

<script type="text/javascript">
function onSilverlightError(sender, args) {

var appSource = "";
if (sender != null && sender != 0) {
appSource = sender.getHost().Source;
}
var errorType = args.ErrorType;
var iErrorCode = args.ErrorCode;

var errMsg = "Unhandled Error in Silverlight 2 Application " + appSource + "\n" ;

errMsg += "Code: "+ iErrorCode + " \n";
errMsg += "Category: " + errorType + " \n";
errMsg += "Message: " + args.ErrorMessage + " \n";

if (errorType == "ParserError")
{
errMsg += "File: " + args.xamlFile + " \n";
errMsg += "Line: " + args.lineNumber + " \n";
errMsg += "Position: " + args.charPosition + " \n";
}
else if (errorType == "RuntimeError")
{
if (args.lineNumber != 0)
{
errMsg += "Line: " + args.lineNumber + " \n";
errMsg += "Position: " + args.charPosition + " \n";
}
errMsg += "MethodName: " + args.methodName + " \n";
}

throw new Error(errMsg);
}
</script>
</head>

<body>
<!-- Runtime errors from Silverlight will be displayed here.
This will contain debugging information and should be removed or hidden when debugging is completed -->
<div id='errorLocation' style="font-size: small;color: Gray;"></div>

<div id="silverlightControlHost">
<object data="data:application/x-silverlight," type="application/x-silverlight-2" width="500" height="240">
<param name="source" value="ClientBin/VideoPlayer.xap"/>
<param name="onerror" value="onSilverlightError" />
<param name="background" value="white" />
<param name="initParams" value="cc=true,markers=true,m={0}" />
<a href="http://go.microsoft.com/fwlink/?LinkID=115261" style="text-decoration: none;">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/>
</a>
</object>
<iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe>
</div>
</body>
</html>

在此先感谢,乔治

最佳答案

据推测,html 包含 javascript 或其他大括号来源({}),它们都需要加倍(到 {{}}) 可与 string.Format 一起使用。我预计可能会有一个不同的(更明显的)标记,即 %%FILENAME%%。然后使用正则表达式或 string.Replace

如果你只有一个标签,string.Replace 就可以了;如果你有很多,正则表达式和 MatchEvaluator 的技巧可能会有所帮助 - like so但具有不同的正则表达式模式。


添加示例 html 后更新:我肯定会使用不同的 token ;在最基本的层面上:

<param name="initParams" value="cc=true,markers=true,m=%%FILENAME%%" />

template = template.Replace("%%FILENAME%%", "video.wmv");

关于c# - 格式字符串包含 "{"时出现 String.Format 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1118529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com