2010-06-03 8 views
0

Si je le code suivant:Utiliser le nom variable StringUtil.substitue dans Actionscript

var value : String = StringUtil.substitute("The value {0} requested is {1}", user, value); 

Comment puis-je utiliser le nom de la variable au lieu d'utiliser {0} et {1} dans le code.

Veuillez nous consulter. Merci.

Edit:

Le code ci-dessus est cité de http://www.rialvalue.com/blog/2010/05/10/string-templating-in-flex/. Il est dit que "nous notons que nous remplaçons les paramètres par l'ordre, il serait plutôt facile de faire une substitution de paramètres nommés (c'est-à-dire en utilisant des jetons comme $ {var1})". Par conséquent, je pense que cela peut être très facile à faire, mais je ne sais pas comment faire.

Répondre

2

On dirait que ce n'est pas possible. Et il est logique qu'il ne permette que des entiers basés sur zéro, puisque vous passez un nombre variable de paramètres que vous n'identifiez pas (à l'exception de leur position relative dans la liste des paramètres).

est ici un morceau de code qui remplacera les jetons par nom:

public static function replacePlaceholders(input:String,replacementMap:Object):String { 
     // '${', followed by any char except '}', ended by '}' 
     return input.replace(/\${([^}]*)}/g,function():String { 
      return replaceEntities(arguments,replacementMap); 
     }); 

    } 

    private static function replaceEntities(regExpArgs:Array,map:Object):String { 
     var entity:String  = String(regExpArgs[0]); 
     var entityBody:String = String(regExpArgs[1]); 
     return (map[entityBody]) ? map[entityBody] : entity; 
    } 

Utilisation:

var test:String = "Hello there ${name}, how is the ${noun} today?"; 
var replacementMap:Object = { 
    name : "YOUR_NAME_HERE", 
    noun : "YOUR_NOUN_HERE" 
}; 

trace(StringUtils.replacePlaceholders(test,replacementMap)); 

Le format que je utilise pour les espaces réservés est $ {placeholdername}, car il est plus sûr , Je pense. Mais si vous voulez supprimer le signe dollar, changez l'expression rationnelle en conséquence.

+0

Serait-ce une extension de la classe StringUtil? montré par StringUtils? – phwd

+0

Pas vraiment, ça fait partie d'une classe d'utilité que j'ai écrite. –

Questions connexes