QString,解析和替换一些特定的部分
QString, Parse and replace some specific sections
假设我有这样一个字符串:
QString str = "23+34-343+$T$-3+$OPC$";
我想替换每个由两个 $ 括起来的部分将替换为 %0、%1 等等。
所以上面的例子是:“23+34-343+%0-3+%1”
我可以使用 QRegularExpression 和这种模式来检测这些部分:“\$.+?\$”
用 %0、%1、%2 等替换这些部分的最佳和最优化方法是什么(不使用循环和索引)。
我真的不明白你为什么不想使用循环。我认为这对您的情况非常有效。
我写了一些例子,但不声明作者身份最佳解决方案:
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++));
这是怎么回事:
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));
假设我有这样一个字符串:
QString str = "23+34-343+$T$-3+$OPC$";
我想替换每个由两个 $ 括起来的部分将替换为 %0、%1 等等。 所以上面的例子是:“23+34-343+%0-3+%1”
我可以使用 QRegularExpression 和这种模式来检测这些部分:“\$.+?\$”
用 %0、%1、%2 等替换这些部分的最佳和最优化方法是什么(不使用循环和索引)。
我真的不明白你为什么不想使用循环。我认为这对您的情况非常有效。
我写了一些例子,但不声明作者身份最佳解决方案:
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++));
这是怎么回事:
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));