QString::arg() 占位符后有数字
QString::arg() with number after placeholder
我想在字符串上使用 .arg()。这是一个例子:
qDebug() << QString("%11%2").arg(66).arg(77);
我想获得输出 66177
但当然这不是实际输出,因为 %11
被解释为占位符 #11 而不是占位符 #1 后跟文字 1 .
是否有比以下更好的解决方案?
qDebug() << QString("%1%2%3").arg(66).arg(1).arg(77);
arg()
的意思是它正在替换从 %1
到 %99
的所有内容,这就是为什么你不应该有 %11
。有几种方法可以避免这种情况。
您的方法很好,您可以在代码的前面将 1 作为常量:
qDebug() << QString("%1%2%3").arg(66).arg(1).arg(77);
或者您可以:
qDebug() << QString("%1").arg(66) + "1" + QString("%1").arg(77);
使用 QString::number
也可以,正如评论中指定的那样。
尝试以下方法之一:
QString::number(66) + "1" + QString::number(77)
QString("%1 1 %2").arg(66).arg(77).replace(" ", "")
arg
替换 %
之后具有最低值的序列。范围必须在 1 到 99 之间。
所以你不必使用 1
索引你可以使用两位数而不是一位数。
试试看会发生什么:
qDebug() << QString("%111%22").arg(66).arg(77);
这应该会给你预期的结果(我已经在 qt 5.4 上测试过,它运行良好)。
我还测试了问题下的解决方案表单评论,它适用于:
qDebug() << QString("%011%02").arg(66).arg(77);
我想在字符串上使用 .arg()。这是一个例子:
qDebug() << QString("%11%2").arg(66).arg(77);
我想获得输出 66177
但当然这不是实际输出,因为 %11
被解释为占位符 #11 而不是占位符 #1 后跟文字 1 .
是否有比以下更好的解决方案?
qDebug() << QString("%1%2%3").arg(66).arg(1).arg(77);
arg()
的意思是它正在替换从 %1
到 %99
的所有内容,这就是为什么你不应该有 %11
。有几种方法可以避免这种情况。
您的方法很好,您可以在代码的前面将 1 作为常量:
qDebug() << QString("%1%2%3").arg(66).arg(1).arg(77);
或者您可以:
qDebug() << QString("%1").arg(66) + "1" + QString("%1").arg(77);
使用 QString::number
也可以,正如评论中指定的那样。
尝试以下方法之一:
QString::number(66) + "1" + QString::number(77)
QString("%1 1 %2").arg(66).arg(77).replace(" ", "")
arg
替换 %
之后具有最低值的序列。范围必须在 1 到 99 之间。
所以你不必使用 1
索引你可以使用两位数而不是一位数。
试试看会发生什么:
qDebug() << QString("%111%22").arg(66).arg(77);
这应该会给你预期的结果(我已经在 qt 5.4 上测试过,它运行良好)。
我还测试了问题下的解决方案表单评论,它适用于:
qDebug() << QString("%011%02").arg(66).arg(77);