いくつかの引数で占有される QML の文字列をどのように持つことができるのでしょうか? Qt では次のようなものがあります。
QString str("%1 %2");
str = str.arg("Number").arg(12);//str = "Number 12"
QML環境では、既に文字列プロトタイプにarg()関数が追加されているので、基本的にQMLではstring.arg()をC++と同じように使うことができます。
これに関するドキュメントは少ないですが、Qt 4.7 + QtQuick 1.1 で動作すると確信しています。
Qt 5 doc を見てみましょう: http://qt-project.org/doc/qt-5.0/qtqml/qml-string.html
使用するだけです:
"foo%1".arg("bar");
この例では、引数はまったく不要です。JS には、間にある数値もサポートする単純な文字列連結があるため、単純な方法でこれを実現できます。
var str = 'Number' + ' ' + 12
非リテラル文字列の引数が本当に必要な場合は、を置き換えるだけで済みます%1
。QString::arg
(引数が 1 つの場合) は、次のとおりです。
function stringArg(str, arg)
{
for(var i = 1; i <= 9; ++i)
if(str.indexOf('%'+i) !== -1)
return str.replace('%'+i, arg);
return str;
}
したがって、コードは次のようになります。
var str = "%1 %2"
str = stringArg(str, "Number")
str = stringArg(str, 12)
(この関数は%1
..のみを処理でき%9
、 whileQString::arg
は まで処理できることに注意してください。コードでは が a として扱われている%99
ため、これにはもう少しロジックが必要です。したがって、これは とまったく同じではありませんが、ほとんどの場合はこれで十分です。複数の置換引数を取る関数を書くこともできますが、簡単にするために、ここではこれだけを書きました。)%10
%1
QString::arg
stringArg
jQueryプラグインでこれを行うことができるかもしれません:
http://docs.jquery.com/Plugins/Validation/jQuery.format
import "jQuery.js" as JQuery
Page {
property string labelStub: "hello {0}"
Label {
text: JQuery.validator.format(labelStub, "world")
}
}