J'ai le format suivant: Valeur1 est {0} et valeur2 est {1}.
Je dois remplacer les nombres entre les supports avec des chaînes. Cela se fait facilement dans la plupart des langues à l'aide de String.Format ou quelque chose le long de ces lignes. Comment puis-je faire cela en utilisant uniquement VBScript? P>
J'ai essayé: p>
Replace (strFormat, "{0}", value1) Replace (strFormat, "{1}", value2)
5 Réponses :
Pourquoi pas? Ce code fonctionne ici:
value1 = "1" value2 = "2" strFormat = "Value1 is {0} and Value2 is {1}." strFormat = Replace (strFormat, "{0}", value1) strFormat = Replace (strFormat, "{1}", value2) MsgBox strFormat
remplacer (straformat, "{0}", valeur1) code> p>
Basé sur votre code Snip, je suppose que vous croyez que remplacer les mutates
strformat code> directement. Cela ne fonctionne pas comme ça; Vous attribuez le résultat à la variable d'origine comme ceci: p>
xxx pré> Vous pouvez également attribuer à une autre variable em> pour stocker les résultats modifiés, comme celui-ci: < / p>
xxx pré> blockQuote>
Hehe merci. C'est toujours quelque chose de simple.
Il n'a pas besoin une autre variable i>, mais juste pour mettre à jour la chaîne d'origine.
Voici une belle petite fonction qui fonctionne quelque chose comme la fonction .NET String.Format. Je l'ai fait rapidement, l'ajout d'une manutention erronée est à vous. Je l'ai fait dans VB6 et ajouté une référence à Microsoft VBScript Expressions 5.5 Strard> Exemple: em> p> strongat ("Bonjour {0}. J'aimerais que vous rencontriez {1}. Ils travaillent tous les deux pour {2}. {0} a travaillé pour {2} depuis 15 ans.", "Bruce", "Chris", " Kyle ") P> Retours: P> Bonjour Bruce. J'aimerais que vous rencontriez Chris. Ils travaillent tous deux pour Kyle. Bruce a travaillé pour Kyle depuis 15 ans. P> p>
Quelques ajustements peuvent être effectués pour VBScript, mais cette fonction semble être polyvalente qu'une simple fonction de remplacement.
Je voulais quelque chose de similaire et je n'aime aucune de ces réponses car ils signifiaient plusieurs lignes pour chaque valeur (Ignorer la réponse de Beaner est pour la mauvaise langue!) J'ai donc créé les éléments suivants:
Test '1', 'three', '2' and 1 again! Test '4', 'six', '5' and 4 again!
C'est imho la meilleure réponse; Simple et réutilisable. Je l'ai presque précipité, mais j'ai ensuite eu des ennuis. Chose est, votre exemple modifie SourceString code>. Ce n'est pas bon lorsque
SourceString code> contient une chaîne de format que vous allez réutiliser. Appels ultérieurs vers
StringFormat (SourceString, ...) code> ne fonctionnera pas car
SourceString code> contient le résultat de l'appel précédent. Je vais éditer votre réponse pour résoudre ce problème.
Édité. J'ai changé le nom du paramètre SourceString code> à
formatrine code>. Par exemple. .NET'S String.format a le nom
format code> pour le premier paramètre. Maintenant, je peux uppoter!
Le seul problème possible avec cette solution est que ces arguments contenant des formats de numéro d'argumentation ultérieurs seront remplacés.
comme Cette classe simple: p> harnais formatage .NET pour VBScript via COM. Maintenant, vous pouvez faire: p> Si vous êtes intéressé par le script de test / démonstration pour faire des expériences
de votre propre: p> Pour en savoir plus sur la mise en forme de .NET, commencez par StringBuilder.AppendFormat Méthode (chaîne, objet) et voir ici et ici pour que les idées comprennent (pas copier et coller) une telle classe dans votre script. p> p>