-7
votes

Interpolation de chaîne C #

Si nous pouvons créer un stockage du temp_data d'une chaîne dans une variable et utilisez l'interpolation sur elle? XXX

Si leur solution possible est disponible autre que string.format () et string.replace ()


9 commentaires

Que voulez-vous dire "utiliser l'interpolation sur elle"?


Pas totalement sûr de ce que tu veux dire, mais je pense que tu veux ceci: $ "hi {nom}"


Du var résultat_data = temp_data.replace ("{nom}", nom); ?


Parce que pour moi, le temp_data obtiendra des données de DB


L'interpolation est Compilation Time Syntaxtic Sugar pour un String.Format régulier.Format . Vous devrez utiliser cela (ou un autre code de modèles).


Utilisez stringbuilder si vous ne souhaitez pas utiliser string.format et string.replace


@Afnanahmad ok merci


Ou utilisez l'interpolation C # 6!


C'est: $ "hi {nom}"


4 Réponses :


3
votes

Si vous souhaitez stocker le message en tant que ressource externe, vous devrez utiliser String.Format plutôt que sur l'interpolation de chaîne, les chaînes interpolées doivent exister dans leur intégralité au moment de la compilation en tant que littéraux à chaîne.

Vous aurez également besoin de Assurez-vous que le nombre de variables contenues dans le message correspondez à ceux de la chaîne de code de code.Format, sinon elle ne transposera pas correctement. p>

Par exemple, il utilise un fichier de ressources; P>

var message = string.Format(Strings.ErrorMessage, value1, value2);


2 commentaires

@LEOGICIEL NO, car vous ne pouvez pas utiliser un message externe au code (fichier dB / ressources) comme expliqué dans ma réponse.


Vous avez raison, j'ai définitivement mal compris ce cas d'utilisation mal expliquée. String.Format est alors la bonne solution, +1 kudos.



-2
votes

Vous pouvez utiliser comme celui-ci

double speedOfLight = 299792.458;
FormattableString message = $"The speed of light is {speedOfLight:N3} km/s.";

System.Globalization.CultureInfo.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("nl-NL");
string messageInCurrentCulture = message.ToString();

var specificCulture = System.Globalization.CultureInfo.GetCultureInfo("en-IN");
string messageInSpecificCulture = message.ToString(specificCulture);

string messageInInvariantCulture = FormattableString.Invariant(message);

Console.WriteLine($"{System.Globalization.CultureInfo.CurrentCulture,-10} {messageInCurrentCulture}");
Console.WriteLine($"{specificCulture,-10} {messageInSpecificCulture}");
Console.WriteLine($"{"Invariant",-10} {messageInInvariantCulture}");


0 commentaires

-1
votes

Vous pouvez utiliser $ - Interpolation de chaîne (référence C #) https://docs.microsoft.com/fr- US / DotNet / Csharp / Langue-Référence / Jetons / interpolés


0 commentaires

-3
votes

Utilisation C # 6, vous pouvez faire exactement ce que vous avez écrit, sans la faute de frappe:

var name = "John";

var temp_data = $"Hi {name}";

var result_data = temp_data;

Console.log(result_data);


6 commentaires

Ne répond pas à la question, le message (TEMP_DATA) doit provenir d'une base de données / ressource externe et de la création d'une autre chaîne (résultat_data)


Où lisez-vous quelque chose à propos de la base de données / de la ressource externe ?? Créer une autre chaîne est uniquement de conserver l'exemple de la question ......


Voir les commentaires ci-dessous Question


J'ajouterais également que votre exemple n'utilise pas d'interpolation de chaîne de toute façon, la valeur de résultat_data est "hi {nom")


N'hésitez ensuite pas à poster un exemple de travail de chargement du message d'une ressource externe "et" à l'aide d'une interpolation de chaîne


Droit, corrigé la faute de frappe