You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt中含多个相同分隔符时如何用split方法拆分QString为指定两部分

实现方法

核心靠QString::split的最大拆分次数参数控制拆分边界,只在第一个匹配到分隔符的位置切分,简单处理后就能得到目标结果,完全不需要手动遍历或者从末尾反向匹配。

注意:Qt 5.15、Qt 6全版本的split方法原生支持maxSplit入参,用来限制最多拆分多少次,是实现这个需求最直接的方式。

代码实现

// 原始字符串和分隔符
const QString origin = "123abc1234567890abc9876543210";
const QString delimiter = "abc";

// 传入*maxSplit=1*,代表最多拆分1次,最终返回2个元素
// 第二个元素会直接保留第一个分隔符之后的所有内容,包括内部后续出现的分隔符
QStringList splitRes = origin.split(
    delimiter,
    Qt::KeepEmptyParts,
    Qt::CaseSensitive,
    1
);

// split默认会移除分隔符,所以给第一段补回分隔符就符合要求
if (splitRes.size() == 2) {
    splitRes[0].append(delimiter);
}

运行结果

最终splitRes存储的两个元素完全匹配需求:

  • 索引0内容:123abc
  • 索引1内容:1234567890abc9876543210
    不会出现匹配最后一个分隔符拆分的问题。

低版本Qt兼容写法

如果使用5.15以下没有maxSplit参数的Qt版本,基于split返回结果做简单拼接即可,不需要额外调用查找类方法:

const QString origin = "123abc1234567890abc9876543210";
const QString delimiter = "abc";
QStringList splitRes = origin.split(delimiter);

if (splitRes.size() >= 2) {
    // 把第一个分段之后的所有拆分结果用分隔符重新拼接,得到完整后半段
    QString tailPart = splitRes.mid(1).join(delimiter);
    splitRes = QStringList{splitRes[0] + delimiter, tailPart};
}

内容的提问来源于stack exchange,提问作者Scars

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 02:24:27