最近出现了一个关于使用String.Format()的问题。 我的答案的一部分包括build议使用StringBuilder.AppendLine(string.Format(…))。 乔恩Skeetbuild议这是一个不好的例子,并提出使用AppendLine和AppendFormat的组合。 在我看来,我从未真正将自己置于使用这些方法的“首选”方法之中。 我想我可能会开始使用类似以下的内容,但有兴趣知道其他人使用什么作为“最佳实践”: sbuilder.AppendFormat("{0} line", "First").AppendLine(); sbuilder.AppendFormat("{0} line", "Second").AppendLine(); // as opposed to: sbuilder.AppendLine( String.Format( "{0} line", "First")); sbuilder.AppendLine( String.Format( "{0} line", "Second"));
我需要使用Python将以下数据写入yaml文件: {A:a, B:{C:c, D:d, E:e}} 即字典中的字典。 我怎样才能做到这一点?
有没有一种简单的方法让DataContractSerializer吐出格式化的XML而不是一个长string? 我不想以任何方式更改标签或内容,只需要添加换行符和缩进来使XML更具可读性。 <tagA> <tagB>This is</tagB> <tagC>Much</tagC> <tagD> <tagE>easier to read</tagE> </tagD> </tagA> <tagA><tagB>This is</tagB><tagC>Much</tagC><tagD><tagE>harder to read</tagE></tagD></tagA>
在Visual Studio中deviseMVC视图(在.aspx或.ascx文件中)我经常使用if语句。 当我自动格式化(Ctrl-K,D)时,VS用这个非常丑陋难懂的方式来包装大括号: <% if (Model.UserIsAuthenticated) {%> (some HTML goes here…) <% }%> 有没有什么办法让Visual Studio自动格式像这样: <% if (Model.UserIsAuthenticated) { %> (some HTML goes here…) <% } %> 还是有更好的方法来做到这一点? 我不想使用剃刀,但它看起来会解决我的问题。 如果有帮助,我使用VS2010与Resharper 5。
我怎样才能在C语言格式的数字从1123456789到1,123,456,789 ? 我尝试使用printf("%'10d\n", 1123456789); 但是这不起作用。 你能提供任何build议吗? 解决scheme越简单越好。
为什么我应该使用人类可读的文件格式而不是二进制文件? 当情况不是这样的时候,有没有这种情况? 编辑:最初发布这个问题时,我确实有这个解释,但是现在并不那么重要: 当回答这个问题时,我想引用提问者一个标准的答案,为什么使用人类可读的文件格式是一个好主意。 然后我search了一个,找不到一个。 所以这是个问题
在编写Perl脚本时,我经常会发现需要获取以stringforms表示的当前时间,格式为YYYY-mm-dd HH:MM:SS (说2009-11-29 14:28:29 )。 在这样做的时候,我发现自己采取了这个相当麻烦的道路: man perlfunc /localtimesearch本地时间 – 重复五次( / + \n )到达联机帮助页的相关部分 复制string($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); 从manpage到我的脚本。 尝试使用my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year, $mon, $mday, $hour, $min, $sec); 记住陷阱#1:必须加1900年到$年来获得当年。 尝试使用my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon, $mday, $hour, $min, $sec); 记住gotcha#2:必须加1到$ mon才能获得当前月份。 尝试使用my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon+1, $mday, $hour, $min, $sec); […]
我在Python 2.6.5中构造了一个strings ,它将有不同数量的%s标记,它们与列表x的条目数相匹配。 我需要写出一个格式化的string。 以下不起作用,但表明我正在尝试做什么。 在这个例子中,有三个令牌,列表有三个条目。 s = '%s BLAH %s FOO %s BAR' x = ['1', '2', '3'] print s % (x) 我想输出string是: 1 BLAH 2 FOO 3 BAR
我可以使用String.Format()填充任意字符的某个string吗? Console.WriteLine("->{0,18}<-", "hello"); Console.WriteLine("->{0,-18}<-", "hello"); returns -> hello<- ->hello <- 我现在想要的空间是一个任意的字符。 我不能用padLeft或padRight做的原因是因为我想能够在不同的地方/时间构造格式string,然后格式化被实际执行。 – 编辑 – 看到似乎没有一个现有的解决scheme,我想到了这个问题( 之前思考编码的build议 ) –EDIT2– 我需要一些更复杂的场景,所以我select了Think Before Coding的第二个build议 [TestMethod] public void PaddedStringShouldPadLeft() { string result = string.Format(new PaddedStringFormatInfo(), "->{0:20:x} {1}<-", "Hello", "World"); string expected = "->xxxxxxxxxxxxxxxHello World<-"; Assert.AreEqual(result, expected); } [TestMethod] public void PaddedStringShouldPadRight() { string result = string.Format(new PaddedStringFormatInfo(), "->{0} […]
我想知道是否有一种方法或格式string我在.NET中缺less转换以下内容: 1 to 1st 2 to 2nd 3 to 3rd 4 to 4th 11 to 11th 101 to 101st 111 to 111th 这个链接在编写自己的函数时涉及到一个基本原理的坏例子,但是如果我缺less一个内置的能力,我更加好奇。 解 Scott Hanselman的答案是被接受的,因为它直接回答了问题。 然而,对于一个解决scheme,请看这个好的答案