Tag: stringbuilder

在StringBuilder.ToString()的上下文中是什么意思?

stringbuilder.cs的参考源页面在ToString方法中有这个注释: if (chunk.m_ChunkLength > 0) { // Copy these into local variables so that they // are stable even in the presence of —-s (hackers might do this) char[] sourceArray = chunk.m_ChunkChars; int chunkOffset = chunk.m_ChunkOffset; int chunkLength = chunk.m_ChunkLength; 这是什么意思? 恶意用户可能会插入要格式化的string吗?

将StringBuilder写入stream

写一个StringBuilder到System.IO.Stream的最佳方法是什么? 我现在在做: StringBuilder message = new StringBuilder("All your base"); message.Append(" are belong to us"); System.IO.MemoryStream stream = new System.IO.MemoryStream(); System.Text.ASCIIEncoding encoding = new ASCIIEncoding(); stream.Write(encoder.GetBytes(message.ToString()), 0, message.Length);

如何明智地使用StringBuilder

我有点困惑使用StringBuilder类,第一: string对象连接操作总是从现有string和新数据创build一个新对象。 一个StringBuilder对象维护一个缓冲区以适应新数据的连接。 如果空间可用,新的数据被附加到缓冲区的末尾; 否则,分配一个新的,更大的缓冲区,将来自原始缓冲区的数据复制到新的缓冲区,然后将新的数据附加到新的缓冲区。 但是,创buildStringBuilder实例的目的是为了避免创build一个新的String ? 这听起来像交易“一对一”。 static void Main(string[] args) { String foo = "123"; using (StringBuilder sb = new StringBuilder(foo)) // also sb isn't disposable, so there will be error { sb.Append("456"); foo = sb.ToString(); } Console.WriteLine(foo); Console.ReadKey(); } 为什么我不应该只使用 += 编辑:好吧,我现在知道如何重用StringBuilder一个实例(仍然不知道这是否正确与代码标准),但这是不值得用一个string ,不是吗?

从stringbuilder构build的string中删除最后一个字符的最佳方法

我有以下 data.AppendFormat("{0},",dataToAppend); 这个问题是我在一个循环中使用它,会有一个逗号逗号。 删除尾随逗号的最好方法是什么? 我必须将数据更改为string的子string吗?

StringBuffer已经过时了吗?

在“有效的Java”一书中,Josh Bloch说 StringBuffer很大程度上已经过时了,应该由非同步实现“StringBuilder” 。 但以我的经验,我仍然看到了StringBuffer类的广泛使用。 为什么StringBuffer类现在已经过时,为什么StringBuilder比StringBuffer更受欢迎,除了由于非同步性能提高?

StringBuilder:如何获得最终的string?

有人告诉我用StringBuilder连接string会更快。 我已经改变了我的代码,但我没有看到任何属性或方法来获得最终的生成string。 我怎样才能得到string?

java:使用StringBuilder在开头插入

我只能用String来做这件事,例如: String str=""; for(int i=0;i<100;i++){ str=i+str; } 有没有一种方法来实现这个与StringBuilder? 谢谢。

你什么时候使用StringBuilder.AppendLine / string.Format与StringBuilder.AppendFormat?

最近出现了一个关于使用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"));

我是否破坏了StringBuilder的效率?

我已经开始使用StringBuilder而不是直接连接,但是它似乎缺less一个关键的方法。 所以,我自己实现它作为一个扩展: public void Append(this StringBuilder stringBuilder, params string[] args) { foreach (string arg in args) stringBuilder.Append(arg); } 这变成了以下混乱: StringBuilder sb = new StringBuilder(); … sb.Append(SettingNode); sb.Append(KeyAttribute); sb.Append(setting.Name); 进入这个: sb.Append(SettingNode, KeyAttribute, setting.Name); 我可以使用sb.AppendFormat("{0}{1}{2}",… ,但是这看起来更不理想,而且更难读。我的扩展是一个好方法,还是以某种方式破坏了好处的StringBuilder ?我不是试图过早地优化任何东西,因为我的方法更多的是可读性而不是速度,但我也想知道我不是在自己的脚下射击。

最佳实践/性能:将StringBuilder.append与String.concat混合

我想了解最佳实践是什么,为什么连接string文字和variables的不同情况。 例如,如果我有这样的代码 StringBuilder sb = new StringBuilder("AAAAAAAAAAAAA") .append(B_String).append("CCCCCCCCCCC").append(D_String) .append("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE") .append("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"); 这是做到这一点的方法吗? 在这篇文章中 ,我注意到Strings上的+运算符创build了一个新的StringBuilder实例,连接操作数,并返回一个string转换,这似乎比调用.append()更多的工作。 所以如果这是真的,那么这是不可能的。 但是String.concat()呢? 每个连接使用.append()是否正确? 或者只是为variables,和文字可以附加.concat() ? StringBuilder sb = new StringBuilder("AAAAAAAAAAAAA") .append(B_String.concat("CCCCCCCCCCC")).append(D_String .concat("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE") .concat("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")); 关于这些情况的最佳实践和性能的一般规则是什么? 我的假设是正确的,它应该真的不被使用?