Tag: stringbuilder

通过StringBuilder将字节顺序标记添加到字符串

如何向StringBuilder添加字节顺序标记? (我必须将一个字符串传递给另一个将其保存为文件的方法,但我无法修改该方法)。 我试过这个: var sb = new StringBuilder(); sb.Append(‘\xEF’); sb.Append(‘\xBB’); sb.Append(‘\xBF’); 但是当我用hex编辑器查看它时,它添加了以下序列: C3 AF C2 BB C2 BF 字符串很大,所以不用来回转换为字节数组就可以了。 编辑:在评论中提问后澄清。 我必须将字符串传递给另一个方法,该方法接受一个字符串并在Azure Blob存储上创建它的文件。 我无法修改其他方法。

P /调用函数传递StringBuilder

在C#文件中我有一个 class Archiver { [DllImport(“Archiver.dll”)] public static extern void archive(string data, StringBuilder response); } 字符串数据是一个输入,StringBuilder响应是函数写入的东西 归档函数原型(用C编写)如下所示: void archive(char * dataChr, char * outChr); 它在dataChr中接收一个字符串,然后执行a strcpy(outChr,”some big text”); 从C#我称之为: string message = “some text here”; StringBuilder response = new StringBuilder(10000); Archiver.archive(message,response); 这是有效的,但问题是,你可能会看到我给StringBuilder大小一个值,但是归档函数可能会返回一个(方式)更大的文本,而不是我给我的StringBuilder的大小。 有任何解决这个问题的方法吗?

String Concat使用常量 – 性能

假设我有以下字符串常量: const string constString1 = “Const String 1”; const string constString2 = “Const String 2”; const string constString3 = “Const String 3”; const string constString4 = “Const String 4”; 现在我可以用两种方式追加字符串:Option1: string resultString = constString1 + constString2 + constString3 + constString4; 选项2: string resultString = string.Format(“{0}{1}{2}{3}”,constString1,constString2,constString3,constString4); 内部string.Format使用StringBuilder.AppendFormat。 现在假设我附加了常量字符串,哪个选项(option1或选项2)在性能和/或内存方面更好?

在我的ASP.NET Codebehind中使用StringBuilder编写HTML是一个好习惯吗?

我很想听听其他开发人员对我通常采用的方法的看法。 我有一个web应用程序,asp.net 2.0,c#。 我通常用来编写下拉列表,表格,输入控件等等,在使用StringBuilder后面的代码中写出类似sb.Append(“ 我发现自己并没有使用很多.net控件,因为我通常会在后面的代码中写出html。 当我想使用jQuery或调用JavaScript时,我只是将该函数调用放在我的sb.Append标记中,如sb.Append(“td … onblur =’fnCallJS()’。 我对这种方法非常满意。 对于数据访问,我使用EntitySpaces。 我有点好奇,如果这种方法是非常错误的,可以根据上下文,好,时间学习3.0等等。我对学习感兴趣,只是在寻找一些意见。 编辑 看完这里的评论后,听起来我应该看看MVC。 我还没有那样做。 这样做的唯一犹豫是现有项目就是现有项目。 有很多代码已经按照我解释的方式完成,很难想象改变它的原因,这样做的好处,以及只需要学习所需要的东西。 我从评论中得到的另一件事是我的代码背后应该不包含很多sb.Append代码,而现在它已经在很多函数中填充了它。 对我而言,它并不凌乱,但那是因为我知道每个函数的作用,并且可以查看它,看看哦,写出x,y和z。 我在.aspx部分只有一个div然后用后面的代码中的StringBuilder构建.innerHtml并不罕见。 再次感谢您的评论。 我在想,因为我在读它们。

TextBox.Text + =“string”; vs TextBox.AppendText(“string”);

这两种方法有什么区别? 一个比另一个更有效吗? 我想也许AppendText()使用类似于StringBuilder的方法,即它使用自己的缓存而不是每次都创建和追加一个新的字符串,这是真的吗? 谢谢。

在C#中,检查stringbuilder是否包含子字符串的最佳方法

我有一个现有的StringBuilder对象,代码附加一些值和分隔符。 现在我想修改代码以添加逻辑,在附加我要检查的文本之前是否确实存在于字符串生成器变量中? 如果没有,那么只有附加否则忽略。 这样做的最佳方法是什么? 我是否需要将对象更改为字符串类型? 需要一种不妨碍性能的最佳方法。 public static string BuildUniqueIDList(context RequestContext) { string rtnvalue = string.Empty; try { StringBuilder strUIDList = new StringBuilder(100); for (int iCntr = 0; iCntr 0) { strUIDList.Append(“,”); } //need to do somthing like strUIDList.Contains(RequestContext.accounts[iCntr].uniqueid) then continue other wise append strUIDList.Append(RequestContext.accounts[iCntr].uniqueid); } rtnvalue = strUIDList.ToString(); } catch (Exception e) { throw; […]

如何将此StringBuilder-to-XML代码更改为LINQ-to-XML?

在我的应用程序中,我使用StringBuilder使用此代码构建XML文件: StringBuilder sb = new StringBuilder(); sb.Append(“” + Environment.NewLine); sb.Append(String.Format(“{1}”, _pluralCamelNotation, Environment.NewLine)); for (int index = 0; index < 3; index++) { sb.Append(String.Format("\t{1}”, _singularCamelNotation, Environment.NewLine)); foreach (DataType dataType in _allDataTypes) { sb.Append(String.Format(“\t\t{2}{1}”, dataType.CamelCaseNotation, Environment.NewLine, dataType.GetDummyData())); } sb.Append(String.Format(“\t{1}”, _singularCamelNotation, Environment.NewLine)); } sb.Append(String.Format(“{1}”, _pluralCamelNotation, Environment.NewLine)); return sb.ToString(); 如何使用LINQ执行相同的操作,如下所示: PSEUDO-CODE: var xdoc = new XDocument( new XDeclaration(“1.0”, “utf-8”, […]

哪个字符串比StringBuilder更有用?

已经有很多关于字符串和字符串构建器之间差异的问题,大多数人都认为字符串构建器比字符串更快。 我很想知道字符串构建器是否太好所以为什么字符串存在? 此外,有些正文可以给我一个例子,其中字符串比字符串构建器更有用吗?

字符串转义为XML-Attribute

我看了一下XML转义字符串 ,发现它非常有用。 我想做类似的事情:转义要在XML-Attribute中使用的字符串。 该字符串可能包含\ r \ n。 XmlWriter类产生类似\ r \ n – >&#xD;&#xA; 我目前使用的解决方案包括XmlWriter和StringBuilder,而且非常难看。 任何提示? EDIT1: 抱歉让LarsH失望,买我的第一个方法是 public static string XmlEscapeAttribute(string unescaped) { XmlDocument doc = new XmlDocument(); XmlAttribute attr= doc.CreateAttribute(“attr”); attr.InnerText = unescaped; return attr.InnerXml; } 这是行不通的。 XmlEscapeAttribute(“Foo\r\nBar”)将导致”Foo\r\nBar” 我使用.NET Reflector来了解XmlTextWriter如何转义属性。 它使用内部的XmlTextEncoder类… 我的方法我目前正在使用这样的方法: public static string XmlEscapeAttribute(string unescaped) { if (String.IsNullOrEmpty(unescaped)) return unescaped; XmlWriterSettings settings […]

用于字节数组的StringBuilder的等效项

这是一个简单的,我认为可以回答的问题。 我确实试图在这里找到答案,但没有提出任何答案 – 如果有我错过的东西,请道歉。 无论如何,是否有相当于StringBuilder的字节数组呢? 我并不担心Append()所有不同重载 – 但我想看看Append(byte)和Append(byte[]) 。 周围有什么东西或者是你自己的时间吗?