如何替换字符串中的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? 的相关文章

  • 使用 lambda 表达式注册类型

    我想知道如何在 UnityContainer 中实现这样的功能 container RegisterType
  • 使用 C# 登录《我的世界》

    我正在尝试为自己和一些朋友创建一个简单的自定义 Minecraft 启动器 我不需要启动 Minecraft 的代码 只需要登录的实际代码行 例如 据我所知 您过去可以使用 string netResponse httpGET https
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • C++ 是否可以在 MacOS 上与 OpenMP 和 boost 兼容?

    我现在已经尝试了很多事情并得出了一些结论 也许 我监督了一些事情 但似乎我无法完成我想要的事情 问题是 是否有可能使用 OpenMP 和 boost 在 MacOS High Sierra 上编译 C 一些发现 如果我错了请纠正我 Open
  • 查找进程的完整路径

    我已经编写了 C 控制台应用程序 当我启动应用程序时 不使用cmd 我可以看到它列在任务管理器的进程列表中 现在我需要编写另一个应用程序 在其中我需要查找以前的应用程序是否正在运行 我知道应用程序名称和路径 所以我已将管理对象搜索器查询写入
  • 如何判断计算机是否已重新启动?

    我曾经使用过一个命令行 SMTP 邮件程序 作为试用版的限制 它允许您在每个 Windows 会话中最多接收 10 封电子邮件 如果您重新启动计算机 您可能还会收到 10 个以上 我认为这种共享软件破坏非常巧妙 我想在我的应用程序中复制它
  • JNI 将 Char* 2D 数组传递给 JAVA 代码

    我想从 C 代码通过 JNI 层传递以下指针数组 char result MAXTEST MAXRESPONSE 12 12 8 3 29 70 5 2 42 42 在java代码中我写了以下声明 public static native
  • 从同一个类中的另一个构造函数调用构造函数

    我有一个带有两个构造函数的类 C 这是代码片段 public class FooBar public FooBar string s constructor 1 some functionality public FooBar int i
  • 查看 NuGet 包依赖关系层次结构

    有没有一种方法 文本或图形 来查看 NuGet 包之间的依赖关系层次结构 如果您使用的是新的 csproj 您可以在此处获取所有依赖项 在项目构建后 项目目录 obj project assets json
  • C# 数据表更新多行

    我如何使用数据表进行多次更新 我找到了这个更新 1 行 http support microsoft com kb 307587 my code public void ExportCSV string SQLSyntax string L
  • unordered_map 中字符串的 C++ 哈希函数

    看起来 C 标准库中没有字符串的哈希函数 这是真的 在任何 c 编译器上使用字符串作为 unordered map 中的键的工作示例是什么 C STL提供模板专业化 http en cppreference com w cpp string
  • 使用 GCP 的数据存储区时如何区分代码是在模拟器中运行还是在 GKE 中运行

    按照中给出的说明进行操作后 我不确定是否遗漏了任何内容https cloud google com datastore docs tools datastore emulator https cloud google com datasto
  • 使用 LINQ to SQL 时避免连接超时的最佳实践

    我需要知道在 net 应用程序中使用 LINQ to SQL 时避免连接超时的最佳实践 特别是在返回时IQueryable
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • WebBrowser.Print() 等待完成。 。网

    我在 VB NET 中使用 WebBrowser 控件并调用 Print 方法 我正在使用 PDF 打印机进行打印 当调用 Print 时 它不会立即启动 它会等到完成整个子或块的运行代码 我需要确保我正在打印的文件也完整并继续处理该文件
  • String.Empty 与 "" [重复]

    这个问题在这里已经有答案了 可能的重复 String Empty 和 有什么区别 https stackoverflow com questions 151472 what is the difference between string
  • 使用 omp_set_num_threads() 将线程数设置为 2,但 omp_get_num_threads() 返回 1

    我有以下使用 OpenMP 的 C C 代码 int nProcessors omp get max threads if argv 4 NULL printf argv 4 s n argv 4 nProcessors atoi argv
  • 如何减少具有多个单元的 PdfPTable 的内存消耗

    我正在使用 ITextSharp 创建一个 PDF 它由单个 PdfTable 组成 不幸的是 对于特定的数据集 由于创建了大量 PdfPCell 我遇到了内存不足异常 我已经分析了内存使用情况 我有近百万个单元格的 1 2 在这种情况下有
  • Objective-C / C 给出枚举默认值

    我在某处读到过关于给枚举默认值的内容 如下所示 typedef enum MarketNavigationTypeNone 0 MarketNavigationTypeHeirachy 1 MarketNavigationTypeMarke
  • OpenCV SIFT 描述符关键点半径

    我正在深入研究OpenCV的SIFT描述符提取的实现 https github com Itseez opencv blob master modules nonfree src sift cpp 我发现了一些令人费解的代码来获取兴趣点邻域

随机推荐

  • 从旧的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