工作中我們一般會大量使用到QString的arg來進行字符串的拼接,因為使用起來確實比較直觀方便,但是當你鏈式使用arg時(即 .arg(xxx).arg(xxx).arg(xxx)....這樣的形式),一定要小心,要確保arg的參數(shù)內(nèi)容沒有形如%<1-99>這樣的內(nèi)容。
因為一旦有這樣的內(nèi)容,后續(xù)arg就會把這些內(nèi)容進行錯誤的替換(除非這是你想要的效果)。
很多時候,像url、路徑、文件名這些都會可能出現(xiàn)這樣形式的內(nèi)容,尤其是url,進行了urlencode的鏈接就很可能有這種。
為了避免出現(xiàn)這種不必要的錯誤,雖然我們可以選擇用QTextStrem或QString::asprintf來替代arg進行字符串拼接的工作,但是這兩種方式都沒有arg那么好用。
既然要用arg的話,那么我們就盡量避免鏈式調(diào)用arg,轉(zhuǎn)而使用arg的多參數(shù)重載方法,重載版本有可以支持從1個QString直到9個QString的參數(shù)。
使用這種多參數(shù)的版本,我們所有的參數(shù)都會一次給到arg進行拼接,就不會出現(xiàn)鏈式調(diào)用的那種問題了。
如果拼接的參數(shù)多于9個呢,這時候可以變通一點,拆分成兩個arg的鏈式調(diào)用,第一個arg的調(diào)用參數(shù)要確保為不會出現(xiàn)%<1-99>這樣的內(nèi)容,后一個就不受限制了。