2013-07-02 1 views
0

J'essaie de créer un analyseur de texte dans AS3, qui trouve des mots entre [crochets] et les remplace par un autre ensemble de mots. Jusqu'à présent, j'ai réussi à créer le style RegEx actuel, mais il ne cesse de cracher deux mots - un dans les parenthèses, et un sans. De même, je n'arrive pas à le faire fonctionner en continu jusqu'à ce que toute la phrase ait été analysée, et que le résultat soit nul.AS3: RegEx obtenant des mots entre crochets

public function parseWords(words):String { 
     var replacer:String = words; 
     var finder:RegExp = new RegExp("\\[([a-zA-Z0-9]+)\\]"); 
     var resulter:Object = finder.exec(words); 
     trace(resulter[0] == "[Rabbit]"); 
     //trace (replacer); 
     trace (resulter); 
     return replacer; 
    } 

résultats de trace; true [Lapin], Lapin

Des idées?

Répondre

1

Est-ce que vous essayez de faire ?:

Fonction:

function replaceWords(subject:String, replacementSet:Array):String 
{ 
    var out:String = subject; 
    var matches:Array = subject.match(/\[\w+\]/g); 

    for(var i:int = 0; i < matches.length; i++) 
    { 
     out = out.replace(matches[i], replacementSet[i]); 
    } 

    return out; 
} 

Et test:

var test:String = "This is [some] text [with] search items."; 

trace(replaceWords(test, ["updated", "without"])); 
// This is updated text without search items. 
+0

Pas tout à fait. J'essaie de faire en sorte que si quelque chose comme [Lapin] montre p, je peux appeler une autre classe pour décrire le lapin, donc dans la chaîne littérale étant envoyé, j'écrirais "Il avait un [lapin]", et dans le analyseur, il verrait [lapin] et ensuite le remplacer par pc.getPet() ;. La dernière partie que je peux comprendre, c'est de trouver la regex pour trouver que je ne peux pas. –

+0

@AlexMarc Donc, vous voulez d'abord obtenir une liste de toutes les correspondances, puis envoyer ces correspondances à un composant pour savoir quoi en faire, puis faire en sorte que ce composant crée une nouvelle chaîne à partir du résultat? – Marty

+0

bien-- non. Pendant que le code s'exécute, il continue d'exécuter la boucle exec jusqu'à ce qu'il renvoie null. Il prend la valeur 0 et le remplace en fonction de ce que le composant. Cependant, peut-être que votre chemin serait beaucoup plus efficace. –

Questions connexes