2
votes

Interpolation au milieu d'une chaîne

Je souhaite interpoler au milieu d'une chaîne, mais je ne peux pas utiliser String.Format , car la chaîne contient des accolades {} .

C'est ce que j'ai essayé jusqu'à présent:

"(function(){var myvariable=" + $"{myvariable c#}" + ")});"

Renvoie:) attendu; prévu

Modifier: J'ai essayé l'extrait suivant, l'interpolation fonctionne maintenant, mais le code n'est pas exécuté dans le navigateur.

string code = "(function(){var myvariable = $"{variableToBeInterpolated}"});"


5 commentaires

Pourquoi la chaîne contenant { ou } signifie-t-elle que vous ne pouvez pas utiliser string.Format ? Il suffit de échapper ces caractères .


Vous pouvez utiliser String.Format - il suffit de doubler vos crochets


Lorsque j'utilise un format de chaîne comme celui-ci: string.Format ((function () {var myvariable = {0}}), myvariable); renvoie: contient un espace réservé non valide


Pourquoi construisez-vous JavaScript via une chaîne en premier lieu? Quel est le soin d'utilisation ici?


J'utilise cefsharp, méthode evaluatescript pour exécuter JavaScript


3 Réponses :


0
votes

Pourquoi voulez-vous interpoler au milieu, plutôt mettre $ devant. Et pour {, vous devez utiliser {{. (il en va de même pour })

string code = $"(function(){{ var myvariable = {myvariable} }});";


3 commentaires

Le symbole $ doit être au milieu s'il ne bogue pas la chaîne à cause des crochets


Cet article explique comment échapper les accolades à l'aide de string.format. (fonctionne avec l'interpolation de chaîne avec $) stackoverflow. com / questions / 3773857 /…


@nickgowdy tnx pour le lien. J'ai annulé ma première réponse, qui est en fait la bonne, mais le fait est que j'étais confus avec les requêtes réelles car @Slinidy a dit qu'il voulait $ au milieu ...



0
votes

Avez-vous essayé:

string someVariable = "test";

string code = $"(function()'{{var myvariable = ({someVariable} in c#)}});"

L'utilisation de $ en C # est une interpolation de chaîne. Ajouté en C # 6

docs .microsoft.com


2 commentaires

Avez-vous essayé de compiler ceci?


@ KennethK Désolé, mon mal. Vous devez faire double {{}} sinon c'est une erreur de compilation. Vérifiez ma réponse mise à jour. Je ne peux pas garantir qu'il fonctionnera au moment de l'exécution, vous devrez l'essayer.



7
votes

Informations générales

Avec C # version 6, des capacités d'interpolation de chaîne ont été ajoutées à la langue.

L'interpolation de chaîne fournit une syntaxe plus lisible et plus pratique pour créer des chaînes formatées plutôt qu'un formatage composite de chaîne fonctionnalité.

Pour résoudre votre problème, veuillez consulter le special characters de la documentation, qui lit ce qui suit:

Pour inclure une accolade, "{" ou "}", dans le texte produit par un chaîne interpolée, utilisez deux accolades, "{{" ou "}}".


Exemple

var variable = 10;
var code = $"(function() {{ var myVariable = {variable} }});";
Console.WriteLine(code);

Sortie: (function () {var myVariable = 10});


2 commentaires

Si ma chaîne contient plus de crochets, cette méthode fonctionne-t-elle?


@Slinidy bien sûr, il vous suffit de leur échapper.