QString,Parse并替换一些特定的部分

时间:2015-08-05 13:09:28

标签: c++ regex qt qstring

假设我有一个这样的字符串:

QString str = "23+34-343+$T$-3+$OPC$";

我想要替换两个$所包含的每个部分将替换为%0,%1等等。 所以上面的例子是:“23 + 34-343 +%0-3 +%1”

我可以使用QRegularExpression并使用此模式检测这些部分:“\ $。+?\ $”

使用%0,%1,%2等替换这些部分的最佳和最优化方式(不使用循环和索引)是什么。

2 个答案:

答案 0 :(得分:0)

我真的不明白为什么你不想使用循环。我认为这是非常有效的方式。

我写了一些例子,但不要求作者身份是最好的解决方案:

QString str = "23+34-343+$T$-3+$OPC$";

int pos = 0, nextPos = 0, iterationNumber = 0;
while ((pos = str.indexOf("$")) > 0 && (nextPos = str.indexOf("$", pos + 1)) > 0)
    str.replace(pos, nextPos - pos + 1, "%" + QString::number(iterationNumber++));

答案 1 :(得分:0)

这是怎么回事:

QString str = "23+34-343+$T$-3+$OPC$";

QRegExp rx;
rx.setMinimal(true);
rx.setPattern("\\$.+\\$");
str.replace(rx, "X");           //First replace every pattern with something like 'X'

for(int i=0 ;str.indexOf("X")!=-1; i++)
    str.replace(str.indexOf("X"), 1,"%"+QString::number(i));