问题标签 [stringbuilder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 有没有比使用循环更快的方法来处理元素序列?
在这里,我使用 for 循环将数据网格的元素存储在字符串生成器中,但是当有大量行时,它会花费太多时间。是否有另一种方法可以在更短的时间内将数据复制到字符串生成器?
c# - StringBuilder.Append 问题
我想知道两者之间的区别(如果有的话):
和 :
c# - StringBuilder 出错——未附加字符串
使用长字符串并发现此问题。有什么建议吗?
我有一个字符串生成器的容量为 1024 且长度为 992 的实例。
我是 .Append() 一个字符串,它的 .Length 属性为 1024。
调用 .Append() 后,.ToString() 方法返回一个长的 "\0\0\0" 字符串。
到底是怎么回事?0.o
如果我创建一个新的 StringBuilder 对象然后追加,我会得到我所期望的。所以字符串“应该”没问题吧?
(我通过执行 .Remove(0, LengthofSB) 技巧来清除字符串生成器)。
有任何想法吗?
c# - C# PInvoke 出字符串声明
在 C# PInvoke 中,如何传递一个字符串缓冲区以便 C DLL 填充它并返回?PInvoke 声明是什么?
C函数声明是
在 C# 中,我已将其声明为
这是正确的吗?我像这样传递 StringBuilder 变量
我想知道它是否正确?
谢谢
.net - 字符串和字符串生成器
.NET 中的字符串和字符串生成器有什么区别?
c# - 如何重用 StringBuilder obj?
据我所知,如果我声明了一本字典,我可以调用 myDict.Clear() 来重用。
现在,如果我将 sb 声明为 StingBuilder obj。
如何重用某人?谢谢你。
实际上,我需要为 mainDict 打印所有可能的条件。
像这样的 sb 表达式之一(包含在下面的代码中)
如果我声明了很多 StringBuilder obj,我仍然无法检测到有多少 obj 对我来说足够了。实际上 mainDict 非常复杂。上面的代码只是一个练习。谢谢。
代码于 1 月 4 日更新。
像这样输出
c# - 在 C# 中构建字符串的一种优雅方式
使用键值对构建的字符串如下所示:“name1=v1&name2=v2&name3=v3”
我在做什么:
有什么优雅的方法可以避免“&”符号的最后一个删除语句?
c# - 关于内存使用的大字符串处理技巧
如何强制缩小 DataTable 和/或 List 以便有效释放内存?我目前在循环的每次迭代中都从 DataSet 中删除已处理的行,但我不确定是否正在释放内存。
如果这不能缩小 DataTable 在内存中的占用空间,我可以使用 List。我只使用 DataTable 作为 DataRows 的存储,我可以使用任何内存不足的集合或存储机制,并且能够在每 x 次迭代中释放内存。
谢谢你。
编辑:在阅读了哪些是好的 .NET Profilers 之后进行了一些内存分析之后?我发现内存的主要消费者是字符串。
在这个过程中我们做了大量的用户输出,内存消耗在大约 170MB-230MB 之间循环,峰值在 300MB 左右。我正在使用初始大小为 20971520 的 StringBuilder 来保存正在发生的事情的输出/日志,在处理完记录总数的百分之一后,我将 DevExpress MemoEdit 控件的 Text 属性设置为 StringBuilder.ToString ()。我发现这种方法比将 StringBuilder.ToString() 附加到 MemoEdit.Text 更快(显然 StringBuilder 的逻辑在附加和设置 MemoEdit.Text 之间是不同的)
我还发现,与其重新创建 StringBuilder(20971520) 相比,它在内存上更容易,执行起来也更快StringBuilder.Remove(0, StringBuilder.Length)
在处理大字符串时,您是否可以分享任何技巧来提高性能(它写出的包含日志的日志文件大约为 12.2MB,大约有 30 000 条记录)?
注意:我已经更改了问题的标题和标签。
旧标题:如何强制缩小数据表和/或列表以释放内存?
老标签: list datatable c# .net memory
c# - 通过互操作接收字符串
我无法从我编写的一些 c 代码中获取字符串。
首先是一些通常未实现的背景信息:我想从 TAPI API 接收 TAPI TSP 的用户可读字符串。我已经实现了一个半可行的 TAPI 解决方案,它依赖于将驱动程序名称与存储的字符串匹配,但我想将其更改为在永久线路 ID 上工作,因为我们的一个客户有一个(阿尔卡特)PBX,它拒绝以任何其他方式工作.
在 C 中,我将头文件中的函数定义为:
函数是这样写的:
如上所述,这最终会做一些有用的事情,但现在如果将 abc 放在我的 wchar_t*/StringBuilder 中,我会很高兴,我可以在 C# 中看到它。
在 C# 中,我将函数定义为:
我将 DeviceName 定义为 StringBuilder 因为字符串是不可变的,并且我希望在 C 中设置 DeviceName (这是 MS 推荐的)。我还将返回类型设置为void
希望这也会影响某些东西(请参阅这篇半有用的单声道文章以获得部分伪科学解释)。
并这样称呼它:
我将调试器附加到正在运行的进程,设置断点,并在 C 代码中注意到 StringBuilder 以某种方式被扭曲并作为空指针提供给非托管代码。
随后在 C# 中引发 AccessViolationException。
出了什么问题?
删除 long 参数会有所帮助。我可以在 C 中将“abc”添加到我的 DeviceName 参数中。但是我想要那个长变量!我在做什么错或不安,以便通过在那里设置那个长参数来强制崩溃?
javascript - JavaScript 是否有内置的 stringbuilder 类?
我看到了一些代码项目解决方案。
但是在 JavaScript 中有一个常规的实现吗?