问题标签 [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 投票
8 回答
184593 浏览

c# - StringBuilder 中的换行符

你如何在中追加一个新行(\n\r)字符StringBuilder

0 投票
2 回答
314 浏览

optimization - 优化 string.Format + 替换

我有这个功能。Visual Studio 配置文件将带有 string.Format 的行标记为热门,我花了很多时间。

我怎样才能更有效地编写这个循环?

0 投票
4 回答
2180 浏览

c# - 如何最大化大对象堆中最大的连续内存块

情况是我正在对远程服务器进行 WCF 调用,该服务器将 XML 文档作为字符串返回。

大多数时候这个返回值是几K,有时是几十K,偶尔几百K,但很少有可能是几兆(第一个问题是我无法知道)。

正是这些罕见的情况造成了悲伤。我得到一个开始的堆栈跟踪:

我已经阅读过,这是因为大对象堆太碎片化了,所以即使在调用之前快速检查 StringBuilder.EnsureCapacity 只会导致提前抛出 OutOfMemoryException (因为我在猜测需要什么,它实际上可能不需要那么多,所以我的检查导致的问题多于解决的问题)。有些意见是我对此无能为力。

我问过自己的一些问题:

  • 使用更少的内存 - 你检查过泄漏吗?是的。内存使用量会上升和下降,但没有基本的增长可以保证这种情况发生。有时它失败了,它在之前的那个阶段成功了。
  • 转移较小的金额不是一个选项,这是我无法控制的第三方网络服务(或者至少需要很长时间才能解决,同时我仍然有问题)
  • 你能对 LOH 做些什么来降低它失败的可能性吗?...现在这是最富有成效的课程。这是一个 32 位进程(它必须出于各种政治、技术和无聊的原因),但通常有数百兆免费(我们见过失败的最大数量的倍数)。
  • 我们可以监控 LOH 吗?使用 perfmon 我可以跟踪堆的大小,但我认为没有办法监控最大的可用连续内存块。

问题是:对尝试的事情有什么建议或建议吗?

0 投票
2 回答
1043 浏览

.net - 使用 StringBuilder 与 XmlDocument 或创建 XML 文档相关的优势是什么?

这可能有点代码异味,但我已经看到它是一些生产代码,即在创建 XML 文档时使用StringBuilder而不是XmlDocument 。在某些情况下,这些是一次写入操作(例如,创建文档并将其保存到磁盘),而其他操作则将构建的字符串传递给 XmlDocument 以将XslTransform 转换为返回给客户端的文档。

如此明显的问题:以这种方式做事是否有好处,是否应该根据具体情况来做,或者这是错误的做事方式?

0 投票
2 回答
2221 浏览

c# - WTSVirtualChannelRead 只读取字符串的第一个字母

我正在尝试编写一个 hello world 类型的程序以在 Windows 终端服务客户端中使用虚拟通道。

我正在从 MSTSC COM 对象和 ActiveX 控件发送数据。

每次NativeMethods.WTSVirtualChannelRead运行我都会得到一个执行

对此的任何帮助将不胜感激。

编辑——当函数运行时,mHandle 有一个非零值。更新代码以添加该检查。

EDIT2 -- 我使用了P/Invoke Interop Assistant并生成了一个新的签名

它现在接收文本字符串(是的!),但它只获取我的测试字符串的第一个字母(嘘!)。关于出了什么问题的任何想法?

编辑 3 --- 在应该读取 hello world 的调用之后;

字节读取 = 24

缓冲区长度 = 1; 缓冲区.容量 = 16; Buffer.m_S​​tringValue = "H";

0 投票
4 回答
868 浏览

c# - SQL DataReader 如何显示查询中的空值

我有一个 DataReader 和一个 StringBuilder (C#.NET),以下列方式使用;

这对我的使用非常有用,但是当一行为空时,我需要它返回“null”,而不仅仅是“”。什么是实现这一目标的好方法?

非常感谢您的建议

0 投票
2 回答
555 浏览

c# - 检测使用/滥用 String.Concat 的工具(应使用 StringBuilder)

众所周知,不应使用 StringBuilder 代替少量串联:

然而,在相当大的循环中,StringBuilder 是显而易见的选择:

是否有一种工具可以在原始 C# 源代码或已编译程序集上运行,以识别代码中String.Concat被调用的位置?(如果您不熟悉,s += "foo"则映射到String.ConcatIL 输出中。)显然,我无法实际搜索整个项目并评估每个项目+=以确定左值是否为字符串。

理想情况下,它只会指出 for/foreach 循环内的调用,但我什至会忍受所有的误报 String.Concat。另外,我知道有一些重构工具会自动重构我的代码以使用StringBuilder,但我现在只对确定Concat使用情况感兴趣。

我经常在我的代码上运行 Gendarme 和 FxCop,但这些工具都不能识别我所描述的内容。但是,正如@Cristian 指出的那样,旧版本的 FxCop 曾经对此进行检查。也许有一种方法可以从旧版本的 FxCop 中提取该规则并告诉新版本(1.36)使用它?

0 投票
2 回答
6188 浏览

vb.net - 将 VB StringBuilder 设置为空字符串的适当方法是什么?

我正在使用VB的StringBuilder,我很好奇什么被认为是清空构建器/将其设置为新字符串的“最佳实践”。会不会是这样的:

或者,还有更好的方法?

谢谢

0 投票
5 回答
3195 浏览

c# - P/Invoke 传递了 StringBuilder 的函数

在 C# 文件中,我有一个

字符串数据是输入,StringBuilder 响应是函数写入内容的地方

归档函数原型(用 C 编写)如下所示:

它在 dataChr 中接收一个字符串,然后执行

从 C# 我称之为这样的东西:

这可行,但问题是,正如您可能看到的那样,我为 StringBuilder 的大小赋值,但归档函数可能会返回比我给 StringBuilder 的大小更大的文本(方式)。有任何解决这个问题的方法吗?

0 投票
4 回答
749 浏览

c# - 管理 StringBuilder 资源

我的 C# (.NET 2.0) 应用程序有一个容量为 2.5MB 的 StringBuilder 变量。很明显,我不想每次填满这么大的缓冲区都复制到更大的缓冲区空间。到那时,缓冲区中的数据太多了,删除旧数据是一个可行的选择。谁能看到我这样做的任何明显问题(即我是否引入了比我正在解决的更多的性能问题),或者看起来还可以吗?

编辑:附加信息:

在这个应用程序中,新数据通过串行连接非常迅速(大约几毫秒)接收。我不想如此频繁地用这些新信息填充多行文本框,因为这会降低应用程序的性能,所以我将它保存到StringBuilder. 每隔一段时间,应用程序就会将 的内容复制StringBuilder到文本框并清除StringBuilder内容。