gpt4 book ai didi

c++ - 拆分 QString 时如何转义分隔符?

转载 作者:行者123 更新时间:2023-11-30 05:27:39 43 4
gpt4 key购买 nike

我如何将 QString 拆分为一个字符,例如:'+' 并且当该字符被转义时不拆分:'\+'?

谢谢!

根据要求,提供更多详细信息:

要拆分的字符串:"a+\+"

分隔符:'+'

期望的输出:"a", "+"

最佳答案

您需要使用 globalMatch使用正则表达式进行拆分,选择除非转义 '+' 之外的所有内容:

(?:[^\\\+]|\\.)*

Live Example

因此给定QString foo,您可以使用 QRegularExpressionMatchIterator 遍历列表:

QRegularExpression bar("((?:[^\\\\\\+]|\\\\.)*)");
auto it = bar.globalMatch(foo);

while(it.hasNext()){
cout << it.next().captured(1).toStdString() << endl;
}

在 C++11 中,您还可以使用 cregex_token_iterator :

regex bar("((?:[^\\\\\\+]|\\\\.)+)");
copy(cregex_token_iterator(foo.cbegin(), foo.cend(), bar, 1), cregex_token_iterator(), ostream_iterator<string>(cout, "\n"));

Live Exampe


如果您不幸没有 Qt5、C++11 或 Boost,您可以使用 QRegExp :

QRegExp bar("((?:[^\\\\\\+]|\\\\.)*)");

for(int it = bar.indexIn(foo, 0); it >= 0; it = bar.indexIn(foo, it)) {
cout << bar.cap(1).toStdString() << endl;
}

关于c++ - 拆分 QString 时如何转义分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37160022/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com