如何替换字符串中的QRegExp?

2024-01-29

我有一根绳子。例如:

QString myString = "Today is Tuesday";

要求是:当用户输入一个字符串时,如果该字符串包含在myString,那么该部分在myString应该是粗体,并且不区分大小写(Qt::CaseInsensitive),但格式为myString应保留(大写字符应为大写,小写字符应为小写)。

例如:

  • 用户类型:tu-> 今天是Tuesday
  • 用户类型:ES-> 今天是土esday
  • 用户类型:aY-> 托德ay是星期二ay

这是我的功能:

void myClass::setBoldForMatching( const QString &p_text )
{
  QRegExp regExp( p_text, Qt::CaseInsensitive, QRegExp::RegExp );
  if ( !p_text.isEmpty() )
  {       
    if ( myString.contains( regExp ) )
    {
      myString = myString.replace( p_text, QString( "<b>" + p_text + "</b>" ), Qt::CaseInsensitive );
    }
  }
}

这个函数是错误的,因为

用户类型t -> today is tuesday.

我需要的是Today is Tuesday

我应该如何更新我的功能?


我们可以使用不同的QString::replace(),它接受一个QRexExp,替换所有出现的情况。做到这一点的关键是我们需要一个捕获组为了在替换中替换原始文本,使用反向引用(\1):

#include <QRegExp>

QString setBoldForMatching(QString haystack, const QString& needle)
{
    if (needle.isEmpty()) return haystack;
    const QRegExp re{"("+QRegExp::escape(needle)+")", Qt::CaseInsensitive};
    return haystack.replace(re, "<b>\\1</b>");
}

Demo

#include <QDebug>
int main()
{
    qInfo() << setBoldForMatching("THIS DAY (today) is Tuesday.", "Day");
}

THIS DAY (today) 是星期二day.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何替换字符串中的QRegExp? 的相关文章

  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么

随机推荐

  • 从旧的init_timer到新的timer_setup的适应

    我一直在尝试将驱动程序从 2 6 移植到 4 X 而没有原始板制造商的支持 并且 Linux 经验非常有限 原来的驱动使用的是init timer 并传入一个指向timer list结构 那timer list结构的data元素被设置为指向
  • WPF DragDrop.DoDragDrop(用于右键单击?)

    在 WPF 中 我想使用右键单击来启动拖放 像 Windows 资源管理器一样 右键单击 稍微移动 您就会得到装饰器来指示操作中的拖放 不要移动 当您松开按钮时 您会看到上下文菜单 我已经启动了这一切 但是当我调用 DragDrop DoD
  • 自然对齐的内存地址

    我需要从现有的64位值中提取一个内存地址 这个地址指向一个4K数组 起始值为 0x000000030c486000 我需要的地址存储在位 51 12 中 因此我使用以下方法提取这些位 address start gt gt 12 0x000
  • 如何从在线检查器中隐藏 codeigniter 足迹区域?

    这可以删除吗codeigniter来自在线工具的足迹区域 例如wappalyzer com or builtwith com并使 敏感项目技术无法检测 是的 这是可能的 首先 您需要知道它是如何被检测到的 看一下 Wappalyzer 代码
  • 如何使用 C# 'foreach' DataTable 中的列?

    如何使用循环遍历数据行中的每一列foreach DataTable dtTable new DataTable MySQLProcessor DTTable mysqlCommand out dtTable foreach DataRow
  • Node.js 和 Tornado 之间的差异[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 除了node js是用JS编写而Tornado是用Python编写之外 两者之间还有哪些区别 它们都是非阻塞异步 Web 服务器 对吧 除了语言
  • asp.net 中的文件处理程序

    我需要跟踪 pdf 在我的网络应用程序中打开的时间 现在 当用户单击链接时 我正在写入数据库 然后从后面的代码中使用 window open 这并不理想 因为 Safari 会阻止弹出窗口 而其他网络浏览器在运行时会发出警告 所以我想Fil
  • 继续 Jenkins 管道过去失败的阶段

    我有一系列执行快速检查的阶段 我想把它们全部完成 即使有失败 例如 stage one node sh exit 0 stage two node sh exit 1 failure stage three node sh exit 0 S
  • 如何使用JPA实现时态表?

    我想知道如何实施时态表 http en wikipedia org wiki Temporal database在带有 EclipseLink 的 JPA 2 中 我所说的时间是指定义有效期的表 我面临的一个问题是 由于引用表的性质 现在它
  • 不安全的指针和 Clang

    也许只是我今天过得很奇怪 但我有几个问题Clang需要一个简短示例的警告 假设有一段时间有这样一段代码 file unsafe c include
  • 如何在 C++ 中检查系统是否处于活动状态?

    我正在编写仅当 PC 上没有人类活动时才需要运行的代码 例如当屏幕保护程序运行时 关于如何在 Windows 下用 C 执行此操作有什么建议吗 talnicolas 只是为了使用未使用的资源 有多少次人们让计算机打开但他们在另一个地方 您可
  • Flutter、Visual Studio 代码项目卡在分析中

    我有一个 flutter 项目 可以使用 git 终端和 flutter 命令毫无问题地运行 flutter run但最近当我尝试使用 Visual Studio Code 打开同一个项目时 我一直面临这个问题 一旦 VS Code 启动
  • ggplot2:用图例制作多条线+带

    我想在 ggplot2 中绘制一个图 多行 每个都有一条环绕的丝带 具有用户指定的颜色 并带有显示线条颜色和色带颜色的图例 向下滚动查看一个绘图示例almost达到我所追求的目标 我见过相关的问题 但没有一个能够一起解决所有这些问题 并且我
  • 将空参数传递给 SignalR 客户端代理时“值不能为空”

    使用 SignalR v2 0 2 我收到此异常 Value cannot be null Parameter name o at Newtonsoft Json Utilities ValidationUtils ArgumentNotN
  • 如何开始编写 iPad 应用程序?

    我从桌面 Apple 编程中了解到 Objective C 但我想跟上 iPad 的潮流 开始开发一些小型的寓教于乐的小程序 iPad API 是否与 iPhone 相同 只是功能更强大 我需要加入 iPhone 开发者计划吗 起价仍然是
  • 窗口形式的一个窗口的 C# 多个 GUI [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我和我的朋友正在尝试使用 Visual Studios Community 开发一款文本游戏 到目前为止 我们已经以 Windows
  • 在ggplot2中,如何选择图例中出现哪个几何图形?

    一些几何图形掩盖了图例中其他几何图形的关键 特别是箱线图 如何选择图例中出现的几何图形 Eg qplot data CO2 x Type y uptake colour Plant shape Treatment geom boxplot
  • microsoft Visual Studio遇到这种情况需要关闭如何解决

    大家好 我遇到了这个问题microsoft visual studio has encountered a problem and needs to close特别是当我打开一个解决方案时 有多种解决方案 但当特别打开一个特定的解决方案时
  • 如何设置指令的动态控制器?

    空谈很便宜 先展示我的代码 HTML div div 指示 angular module attrDirective directive addIcons function compile return restrict A control
  • 如何替换字符串中的QRegExp?

    我有一根绳子 例如 QString myString Today is Tuesday 要求是 当用户输入一个字符串时 如果该字符串包含在myString 那么该部分在myString应该是粗体 并且不区分大小写 Qt CaseInsens