我有以下的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