工作中我们一般会大量使用到QString的arg来进行字符串的拼接,因为使用起来确实比较直观方便,但是当你链式使用arg时(即 .arg(xxx).arg(xxx).arg(xxx)....这样的形式),一定要小心,要确保arg的参数内容没有形如%<1-99>这样的内容。
因为一旦有这样的内容,后续arg就会把这些内容进行错误的替换(除非这是你想要的效果)。
很多时候,像url、路径、文件名这些都会可能出现这样形式的内容,尤其是url,进行了urlencode的链接就很可能有这种。
为了避免出现这种不必要的错误,虽然我们可以选择用QTextStrem或QString::asprintf来替代arg进行字符串拼接的工作,但是这两种方式都没有arg那么好用。
既然要用arg的话,那么我们就尽量避免链式调用arg,转而使用arg的多参数重载方法,重载版本有可以支持从1个QString直到9个QString的参数。
使用这种多参数的版本,我们所有的参数都会一次给到arg进行拼接,就不会出现链式调用的那种问题了。
如果拼接的参数多于9个呢,这时候可以变通一点,拆分成两个arg的链式调用,第一个arg的调用参数要确保为不会出现%<1-99>这样的内容,后一个就不受限制了。