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}"});"
3 Réponses :
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} }});";
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 ...
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
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.
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 "}}".
var variable = 10; var code = $"(function() {{ var myVariable = {variable} }});"; Console.WriteLine(code);
Sortie:
(function () {var myVariable = 10});
Si ma chaîne contient plus de crochets, cette méthode fonctionne-t-elle?
@Slinidy bien sûr, il vous suffit de leur échapper.
Pourquoi la chaîne contenant
{
ou}
signifie-t-elle que vous ne pouvez pas utiliserstring.Format
? Il suffit de échapper ces caractères .Vous pouvez utiliser
String.Format
- il suffit de doubler vos crochetsLorsque 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