草庐IT

StringBuffer与stringBuilder

全部标签

c# - StringBuilder 中的正则表达式替换

我正在将文本文件的内容写入StringBuilder,然后我想使用正则表达式对StringBuilder中包含的文本执行一些查找/替换操作。我遇到了一个问题,因为StringBuilder替换函数无法接受正则表达式参数。我可以在普通字符串上使用Regex.Replace,但我的印象是这样做效率低下,因为.net字符串是不可变的,因此需要在内存中创建字符串的两个副本。一旦我更新了文本,我计划将其写回原始文件。解决我的问题的最好和最有效的方法是什么?编辑除了下面的答案外,我还发现了以下问题,这些问题也对我的问题有所启发-memory-efficiency-and-performance-o

c# - 处置 StringBuilder 对象

如何有效地处理StringBuilder对象?如果用户一次生成多个报告,我的应用程序最终会使用大量内存。我在一些在线网站上看到以下内容可能会有所帮助:StringBuildersb=newStringBuilder(1000000);//loopgoeshereaddinglotsofstufftosbexampleObject.Text=sb.ToString();sb.Length=0;最后一行真的有用吗?还有其他处理方法吗?注意:这并没有真正阻止我的用户继续使用该应用程序。我只是想知道是否有避免冗余内存使用的方法。 最佳答案

c# - 通过 StringBuilder 使用 XmlWriter 序列化的 XML 是 utf-16,而通过 Stream 是 utf-8?

当我遇到它时我很惊讶,并编写了一个控制台应用程序来检查它并确保我没有做任何其他事情。谁能解释一下?代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Linq;usingSystem.Text;usingSystem.Xml;usingSystem.Xml.Serialization;namespaceConsoleApplication1{publicclassProgram{staticvoidMain(string[]args){varo=newSomeObject{Field1=

c# - StringBuilder 和字节转换

我有以下代码:StringBuilderdata=newStringBuilder();for(inti=0;i但是我得到这个错误:cannotconvertfrom'System.Text.StringBuilder'to'char[]'Thebestoverloadedmethodmatchfor'System.Text.Encoding.GetBytes(char[])'hassomeinvalidarguments 最佳答案 以下代码将解决您的问题。StringBuilderdata=newStringBuilder();f

c# - 如何检索 StringBuilder 行数?

我有一个StringBuilder实例,我在其中做了很多sb.AppendLine("test");例如。如何计算出我有多少行?我看到这个类有.Length但它告诉我总共有多少个字符。有什么想法吗? 最佳答案 按效率排序:计算您的AppendLine()调用在循环中调用IndexOf()使用正则表达式使用String.Split()最后一个非常昂贵,会产生很多垃圾,不要使用。 关于c#-如何检索StringBuilder行数?,我们在StackOverflow上找到一个类似的问题:

StringBuilder 的 C# String.Substring 等价物?

StringBuilder似乎没有Substring(start,len)方法...我在这里缺少什么? 最佳答案 StringBuilder类有一个特殊版本的ToString带有两个参数的方法,与Substring(startIndex,length)完全相同。StringBuildersb=newStringBuilder("ThisisaTest");stringtest=sb.ToString(10,4);Console.WriteLine(test);//result=Test

c# - StringBuilder.ToString() 抛出 'Index out of range' 异常

非常感谢有人帮助我解决以下问题:我时常遇到以下异常:Indexwasoutofrange.Mustbenon-negativeandlessthanthesizeofthecollection.Parametername:chunkLength关于stringBuilder.ToString()。奇怪的是,如果我将stringBuilder.ToString()放入watch中,它会完美运行。 最佳答案 看起来这是一个多线程问题。我锁定了线程以防止同时对stringBuilder进行多次访问。publicvoidAddString(

c# - 如何检查 StringBuilder 是否为空?

我想测试StringBuilder是否为空,但没有IsEmpty方法或属性。如何确定这一点? 最佳答案 如果您查看documentationofStringBuilder它只有4个属性。其中之一是长度。ThelengthofaStringBuilderobjectisdefinedbyitsnumberofCharobjects.您可以使用Length属性:GetsorsetsthelengthofthecurrentStringBuilderobject.StringBuildersb=newStringBuilder();if(

c# - StringBuilder 与 StringWriter/StringReader

我最近读到在StringWriter和StringReader中用于写入和读取StringBuilder。当我使用StringBuilder对象时,它看起来是一个自给自足的类。我们有各种读写StringBuilder的方法,使用StringBuilder.Append()、Insert()、Replace()、Remove()等...StringWriter和StringReader有什么可能的用途,而这不能由StringBuilder本身完成?它们的实际用途是什么?他们没有将Stream作为输入的可能原因是什么(因为任何其他编写者和读者都将流作为要操作的构造函数参数)但StringB

c# - 从我的 stringbuilder 中删除一个字符

这个问题在这里已经有了答案:Bestwaytoremovethelastcharacterfromastringbuiltwithstringbuilder(12个答案)关闭3年前。我有以下字符串生成器作为msrtResult,它很长:mstrResult.Append(rtbResult.Text).Append("})})"+Environment.NewLine)现在如何从mstrResult中删除最后一个“,”?(它在那个mstrResult的中间,它不是整个字符串的最后一个字符,因为我正在向它附加字符串)我应该在添加换行符之前这样做。谢谢