首页 新闻 赞助 找找看

怪 string.Format()

0
悬赏园豆:20 [已关闭问题]

一个很长的字符串,里面有标签{0},{1}……{9}

我用string.Format() 格式的时候 竟然报错,{0}难道还有长度限制吗?

没办法,只能用replace,顺利通过……

请高手指点迷津

问题补充: StreamReader objReader = new StreamReader(@"F:\New120mmm\template\news.html", UnicodeEncoding.GetEncoding("GB2312")); string HtmlText = objReader.ReadToEnd(); objReader.Close(); string file = @"F:\New120mmm\yaopinchaxun\{0}.html"; string info = "{0}个文件已生成!"; string total = "共生成{0}个文件"; int i = 0; using (SqlConnection conn = new SqlConnection(connection)) { SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { //HtmlText = String.Format(HtmlText, reader["title"].ToString(), reader["title"].ToString(), reader["title"].ToString(), reader["title"].ToString(), reader["content"].ToString(), reader["PreviewId"].ToString() + ". html", reader["PreviewTitle"].ToString(), reader["NextId"].ToString() + ".html", reader["NextTitle"].ToString(), reader["chu"]); HtmlText = HtmlText.Replace("{0}", reader["title"].ToString()); HtmlText = HtmlText.Replace("{1}", reader["title"].ToString()); HtmlText = HtmlText.Replace("{2}", reader["title"].ToString()); HtmlText = HtmlText.Replace("{3}", reader["title"].ToString()); HtmlText = HtmlText.Replace("{4}", reader["content"].ToString()); HtmlText = HtmlText.Replace("{5}", reader["PreviewId"].ToString() + ".html"); HtmlText = HtmlText.Replace("{6}", reader["PreviewTitle"].ToString());
weblogical的主页 weblogical | 初学一级 | 园豆:6
提问于:2009-01-04 23:37
< >
分享
其他回答(7)
0

请把代码或者错误信息贴出来

eaglet | 园豆:17139 (专家六级) | 2009-01-05 07:15
0

{0},{1},{2}...等对应Format后面参数的个数的.同时0,1,表示参数出现的位置.

波波塔 | 园豆:638 (小虾三级) | 2009-01-05 08:56
0
Code
String a = "abcdefg{0}{1}{2}{3}";
a
= String.Format(a, "h", "I", "J", "K");
Console.Write(a);

 

如上:你中间的标签不能间断的。

输出的结果应该是你需要的。

winzheng | 园豆:8797 (大侠五级) | 2009-01-05 09:30
0

为什么不说是什么错?

可能是HtmlText有大括号.Format里面的非占位大括号要转义。

这表示一个大括号:"{{}}"

BB_Coder | 园豆:797 (小虾三级) | 2009-01-05 11:21
0

String a = "abcdefg,{0}{0}{0}{1}{2}{3}";

a = String.Format(a, "h", "I", "J", "K");

Console.Write(a); //输出:abcdefg,hhhIJK

是可以这样用的

另外,不知道你的HtmlText 到底是什么内容,也没法给你说。

还有,你把HtmlText处理放在while里面,不是只能得到最后一个结果么?

风海迷沙 | 园豆:4453 (老鸟四级) | 2009-01-05 12:17
0

我猜测是对于{0},{1},...,{N}这样的格式串,提供了多于N+1个参数造成的。比如:

string.Format("{0}{1}{2}", 1, 2, 3, 4);

好好数一下{}占位符的数量,和参数的数量吧。

Anders Liu | 园豆:230 (菜鸟二级) | 2009-01-05 15:44
0

我猜测是对于{0},{1},...,{N}这样的格式串,提供了多于N+1个参数造成的。比如:

string.Format("{0}{1}{2}", 1, 2, 3, 4);

好好数一下{}占位符的数量,和参数的数量吧。

Anders Liu | 园豆:230 (菜鸟二级) | 2009-01-05 15:44
0

碰的怪事多了,就见怪不怪,

发现99%都是自己的问题导致的,呵呵。

5yplan | 园豆:1330 (小虾三级) | 2009-01-05 16:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册