问题标签 [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.

0 投票
5 回答
200 浏览

c# - 有没有比使用循环更快的方法来处理元素序列?

在这里,我使用 for 循环将数据网格的元素存储在字符串生成器中,但是当有大量行时,它会花费太多时间。是否有另一种方法可以在更短的时间内将数据复制到字符串生成器?

0 投票
4 回答
386 浏览

c# - StringBuilder.Append 问题

我想知道两者之间的区别(如果有的话):

和 :

0 投票
2 回答
2083 浏览

c# - StringBuilder 出错——未附加字符串

使用长字符串并发现此问题。有什么建议吗?

我有一个字符串生成器的容量为 1024 且长度为 992 的实例。

我是 .Append() 一个字符串,它的 .Length 属性为 1024。

调用 .Append() 后,.ToString() 方法返回一个长的 "\0\0\0" 字符串。

到底是怎么回事?0.o

如果我创建一个新的 StringBuilder 对象然后追加,我会得到我所期望的。所以字符串“应该”没问题吧?

(我通过执行 .Remove(0, LengthofSB) 技巧来清除字符串生成器)。

有任何想法吗?

0 投票
2 回答
8127 浏览

c# - C# PInvoke 出字符串声明

在 C# PInvoke 中,如何传递一个字符串缓冲区以便 C DLL 填充它并返回?PInvoke 声明是什么?

C函数声明是

在 C# 中,我已将其声明为

这是正确的吗?我像这样传递 StringBuilder 变量

我想知道它是否正确?

谢谢

0 投票
4 回答
2354 浏览

.net - 字符串和字符串生成器

.NET 中的字符串和字符串生成器有什么区别?

0 投票
2 回答
5356 浏览

c# - 如何重用 StringBuilder obj?

据我所知,如果我声明了一本字典,我可以调用 myDict.Clear() 来重用。

现在,如果我将 sb 声明为 StingBuilder obj。

如何重用某人?谢谢你。

实际上,我需要为 mainDict 打印所有可能的条件。

像这样的 sb 表达式之一(包含在下面的代码中)

如果我声明了很多 StringBuilder obj,我仍然无法检测到有多少 obj 对我来说足够了。实际上 mainDict 非常复杂。上面的代码只是一个练习。谢谢。


代码于 1 月 4 日更新。

像这样输出

0 投票
7 回答
1133 浏览

c# - 在 C# 中构建字符串的一种优雅方式

使用键值对构建的字符串如下所示:“name1=v1&name2=v2&name3=v3”

我在做什么:

有什么优雅的方法可以避免“&”符号的最后一个删除语句?

0 投票
4 回答
1728 浏览

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

0 投票
3 回答
1736 浏览

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 参数中。但是我想要那个长变量!我在做什么错或不安,以便通过在那里设置那个长参数来强制崩溃?

0 投票
12 回答
194603 浏览

javascript - JavaScript 是否有内置的 stringbuilder 类?

我看到了一些代码项目解决方案

但是在 JavaScript 中有一个常规的实现吗?