2012-10-06 9 views

Odpowiedz

22

W środowisku QML, funkcja arg() została już dodana do prototypu, więc w zasadzie można użyć metody string.arg() w QML podobnie jak C++.

Jest mniej dokumentacja na ten temat, ale jestem pewien, że to działa w Qt 4.7 + QtQuick 1,1

Weź udział w spojrzeniu na Qt 5 Doc: http://qt-project.org/doc/qt-5.0/qtqml/qml-string.html

+0

Czy występują jakieś problemy z wydajnością? –

1

Argumenty są całkowicie zbędne w tym przykładzie. W JS, mamy prostą konkatenacji ciąg, który obsługuje również numery pomiędzy, więc można to osiągnąć za pomocą prostego

var str = 'Number' + ' ' + 12 

Jeśli naprawdę chcesz argumenty nie dosłownych strun, można po prostu zastąpić %1 z wymianą . QString::arg (z jednym argumentem) nie jest niczym więcej niż:

function stringArg(str, arg) 
{ 
    for(var i = 1; i <= 9; ++i) 
     if(str.indexOf('%'+i) !== -1) 
      return str.replace('%'+i, arg); 
    return str; 
} 

Więc twój kod staje:

var str = "%1 %2" 
str = stringArg(str, "Number") 
str = stringArg(str, 12) 

(Zauważ, że funkcja ta może obsłużyć tylko %1 .. %9, natomiast QString::arg może obsłużyć To wymaga nieco więcej logiki, ponieważ %10 jest podszyty jako %1 w moim kodzie, więc nie jest to dokładnie to samo co QString::arg, ale w większości przypadków będzie wystarczające. Możesz również napisać stringArg funkcja biorąca wiele argumentów zastępujących, ale dla uproszczenia właśnie napisałem tę tutaj.)

13

wystarczy użyć:

"foo%1".arg("bar"); 
+0

Fantastycznie! :). Dziękuję – saeed

Powiązane problemy