我有以下的QString:的QList <QString>到QString.arg()
QString funcProxy = "executeProxy(\"%1\", \"%2\", \"%3\")";
的数据,对每一个在:
QList<QString> listProxy;
我怎么会去在listProxy添加数据使用arg()方法的funcProxy?
funcProxy.arg(??);
感谢
我有以下的QString:的QList <QString>到QString.arg()
QString funcProxy = "executeProxy(\"%1\", \"%2\", \"%3\")";
的数据,对每一个在:
QList<QString> listProxy;
我怎么会去在listProxy添加数据使用arg()方法的funcProxy?
funcProxy.arg(??);
感谢
关于来自@owacoder的答案,您实际上并不需要替换函数,以下代码应该可以正常工作:
for (int i = 0; i < listProxy.size(); ++i) {
funcProxy = funcProxy.arg(listProxy.at(i));
}
为什么你问:从文档上QString::arg()
返回此字符串与字符串替换
因此它取代了最低数字编号最小的位置标记副本arg调用中的字符串。第一次迭代包含%1
,%2
和%3
,因此它取代%1
。下一次迭代包含%2
和%3
,因此取代%2
。
另外,如果你有控制权funcProxy
,你可以做以下给出您可以将列表更改为QStringList
:
QString funcProxy = "executeProxy(\"%1\")";
QStringList listProxy{"a", "b", "c"};
funcProxy = funcProxy.arg(listProxy.join("\", \""));
如果你知道你的列表中有3完全相同的元素,你可以这样做:
funcProxy.arg(listProxy.at(0)).arg(listProxy.at(1)).arg(listProxy.at(2));
否则,你可以这样做:
for (int i = 0; i < listProxy.size(); ++i)
funcProxy.replace(QString("%%1").arg(i+1), listProxy.at(i));
谢谢这是一个很好的解决方案 – adviner