如何超越这个正则表达式替代品?

2023-12-31

经过大量测量后,我在我们的一项 Windows 服务中发现了一个我想要优化的热点。我们正在处理可能包含多个连续空格的字符串,并且我们希望减少到仅单个空格。我们使用静态编译的正则表达式来完成此任务:

private static readonly Regex 
    regex_select_all_multiple_whitespace_chars = 
        new Regex(@"\s+",RegexOptions.Compiled);

然后按如下方式使用它:

var cleanString=
    regex_select_all_multiple_whitespace_chars.Replace(dirtyString.Trim(), " ");

该行已被调用数百万次,并且被证明是相当密集的。我试图写出更好的东西,但我被难住了。考虑到正则表达式相当适度的处理要求,肯定有更快的东西。可以unsafe使用指针处理可以进一步加快速度吗?

Edit:

感谢您对这个问题的一系列令人惊奇的回答......最出乎意料的是!


这大约快了三倍:

private static string RemoveDuplicateSpaces(string text) {
  StringBuilder b = new StringBuilder(text.Length);
  bool space = false;
  foreach (char c in text) {
    if (c == ' ') {
      if (!space) b.Append(c);
      space = true;
    } else {
      b.Append(c);
      space = false;
    }
  }
  return b.ToString();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何超越这个正则表达式替代品? 的相关文章

  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 字符串数组文本格式化

    我有这个字符串 String text Address 1 Street nr 45 Address 2 Street nr 67 Address 3 Street nr 56 n Phone number 000000000 稍后将被使用
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co

随机推荐

  • 什么是比较合同?

    我的java代码抛出了以下异常 java lang IllegalArgumentException Comparison method violates its general contract 我研究了 StackOverflow 上的
  • 导入不适用于 tsconfig.json 中的 "module": "ESNEXT"

    我在服务器端有以下代码 import as express from express export class AppRouter private static instance express Router static getInsta
  • Flexbox 换行 - 最后一行的不同对齐方式

    我使用弹性框将两个项目与容器的左侧和右侧对齐 同时将它们垂直居中对齐 这是我想要实现的目标的一个非常简单的例子 HTML div class container div class first div div class second di
  • 如何判断 Delphi 应用程序是否“拥有”其控制台?

    Delphi 控制台应用程序可以从现有控制台窗口的命令行运行 并且可以通过双击其图标来运行 在后一种情况下 它将创建自己的控制台窗口 并在应用程序终止后将其关闭 如何判断我的控制台应用程序是否已创建自己的窗口 我想检测到这一点 以便我可以显
  • 使用 matplotlib + errorbar 进行动画

    我正在尝试根据这个例子制作动画 我的主要问题是我不知道如何将动画与错误栏连接起来 也许有人已经解决了 相似的东西 import numpy as np import matplotlib pyplot as plt import matpl
  • 将行分隔的 grep 结果放入数组中

    我有以下 grep 命令 echo v1 33 4 egrep o 0 9 1 3 返回 1 33 4 在 Bash 脚本中 我想将这些行分隔成一个数组 我尝试将它直接分配给一个变量并对其运行 for 循环 但循环内的回声仅产生第一个数字1
  • Eclipse 不允许从另一个工作区访问外部 jar 中的静态接口方法

    有两个 Eclipse 工作区 工作区A and 工作区B In 工作区A 有一个项目 其接口定义了公共静态方法 package workspacea public interface Foo public static String sa
  • 将自定义搜索字段添加到 DataTable 对象

    我需要将在页面上创建的字段添加到 DataTable 对象 尽管它们不是典型的参数 顺序 搜索 分页等 但它们可以与 DataTables 对象状态的其余部分一起保存和加载 JavaScript document ready functio
  • Android 设备选择器窗口目标栏中的橙色三角形是什么意思?

    当我使用 Eclipse 启动 Android 应用程序时 会出现通常的窗口 Android Device Chooser 我可以在这里选择要在哪个设备上运行我的应用程序 在目标列中 我的目标旁边会出现一个带有感叹号的橙色三角形 有点 警告
  • Numpy:从给定范围生成组合的有效方法

    我有一个 n 维数组 如下所示 np array 0 3 0 3 0 10 在此数组中 元素表示低值和高值 前任 0 3 指的是 0 1 2 3 我需要使用上面给出的范围生成所有值的组合 例如 我想要 0 0 0 0 0 1 0 1 0 3
  • 重新编码数值向量 R

    我有一个数字向量 让我们这样说 x lt rep 1 6 300 我想做的是重新编码向量 使 6 1 5 2 4 3 3 4 2 5 1 6 我不想从中创造一个因素 到目前为止 我尝试过的所有操作都因为顺序而给出了错误的计数 即 x x 6
  • Haskell 中一元运算符的前缀形式

    In GHCi 前奏 gt 3 2 5 前奏 gt 3 2 6 前奏 gt 3 20 66666666666666666 前奏 gt 3 2没有 Num t gt t1 的实例由字面意思产生的3 at
  • 使用 FILTERXML 将字符串解析为表

    这与此有关question https stackoverflow com questions 69045317 how to calculate backplane throughput given an arbitrary list o
  • 数组的 setter 和 getter

    我是 Java 新手 我需要一些澄清如何解决问题 我有课Epicycle 定义如下 public class Ts epicycle private double epoch private double tle new double 10
  • xmpphp XMPP,从 php 脚本发送消息

    你好 我有一个 jabberserver 我希望能够从 php 脚本向用户推送消息 F x 如果我从浏览器调用 script php 它会向用户发送一条消息 我已经尝试过 jaxl 和 xmpphp 这两个 xmp 框架 但我无法让它工作
  • Angular2 beta:嵌套基于表单的父/子组件并从父级进行验证

    我正在尝试在 Angular2 Plunker 中带有 TS 的 beta 0 中实现一个具有 2 个嵌套表单的场景 每个表单由一个组件表示 父组件是Word 它代表假字典中的单词 子组件是WordSense s 每个都代表父词的一种含义
  • 使用 SmtpClient 时“操作超时”

    我正在尝试使用 C 框架创建一个小应用程序来发送电子邮件 然而 它不起作用 该应用程序总是给我 操作超时 我不知道为什么 这是我的代码 private void button1 Click object sender EventArgs e
  • 在 PostGIS 中,大于半个世界的多边形被视为相反的多边形

    我将 GeoDjango 与 PostGIS 结合使用 并尝试使用多边形从数据库中获取属于其中的记录 如果我定义一个大于地球面积一半的多边形 则假定多边形的 内部 是我打算作为 外部 的较小区域 并且仅返回其外部的结果 我可以使用这个较小的
  • 使用 CSS Flex 使行中的元素等高

    我试图使用黄色背景的元素与该行中的其他元素具有相同的高度flex 但无法通过这种设计弄清楚 这li元素只是不想处于全高 运行代码片段看看我在说什么 谢谢你 html body height 100 margin 0 padding 0 ma
  • 如何超越这个正则表达式替代品?

    经过大量测量后 我在我们的一项 Windows 服务中发现了一个我想要优化的热点 我们正在处理可能包含多个连续空格的字符串 并且我们希望减少到仅单个空格 我们使用静态编译的正则表达式来完成此任务 private static readonl