Je souhaite effectuer les opérations suivantes en C # (provenant d'un arrière-plan Python):
strVar = "stack"
mystr = "This is %soverflow" % (strVar)
Comment remplacer le jeton à l'intérieur de la chaîne par la valeur à l'extérieur?
string mystr = string.Format("This is {0}overflow", strVar);
Et vous pouvez aussi utiliser des paramètres nommés à la place des index.
Cela a été ajouté à partir de C # 6.0 (Visual Studio 2015+).
Exemple:
var planetName = "Bob";
var myName = "Ford";
var formattedStr = $"Hello planet {planetName}, my name is {myName}!";
// formattedStr should be "Hello planet Bob, my name is Ford!"
Ceci est un sucre syntaxique pour:
var formattedStr = String.Format("Hello planet {0}, my name is {1}!", planetName, myName);
Ressources supplémentaires:
Vous pouvez utiliser string.Format
pour déposer des valeurs dans des chaînes:
private static readonly string formatString = "This is {0}overflow";
...
var strVar = "stack";
var myStr = string.Format(formatString, "stack");
Une alternative consiste à utiliser l'opérateur de concaténation C #:
var strVar = "stack";
var myStr = "This is " + strVar + "overflow";
Si vous faites beaucoup de concaténations, utilisez la classe StringBuilder
qui est plus efficace:
var strVar = "stack";
var stringBuilder = new StringBuilder("This is ");
for (;;)
{
stringBuilder.Append(strVar); // spot the deliberate mistake ;-)
}
stringBuilder.Append("overflow");
var myStr = stringBuilder.ToString();
Si vous utilisez actuellement Visual Studio 2015 avec C # 6.0, essayez ce qui suit:
var strVar = "stack";
string str = $"This is {strVar} OverFlow";
cette fonctionnalité est appelée interpolation de chaîne.
Il n'y a pas d'opérateur pour cela. Vous devez utiliser string.Format
.
string strVar = "stack";
string mystr = string.Format("This is {0}soverflow", strVar);
Malheureusement, string.Format
est une méthode statique, vous ne pouvez donc pas simplement écrire "This is {0}soverflow".Format(strVar)
. Certaines personnes ont défini une méthode d’extension permettant cette syntaxe.
Utilisez string.Format
:
string mystr = string.Format("This is {0}overflow", "stack");
Vous devriez utiliser String.Format()
. La syntaxe est un peu différente, des espaces réservés numériques sont utilisés à la place.
Exemple:
String.Format("item {0}, item {1}", "one", "two")
Consultez http://msdn.Microsoft.com/en-us/library/system.string.format.aspx pour plus de détails.
Vous avez 2 options. Vous pouvez utiliser String.Format ou l'opérateur de concaténation.
String newString = String.Format("I inserted this string {0} into this one", oldstring);
OR
String newString = "I inserted this string " + oldstring + " into this one";
Il existe un autre moyen d'implémenter des espaces réservés avec string.Replace, aide étrangement dans certaines situations:
mystr = mystr.Replace("%soverflow", strVar);
Vous pouvez accomplir cela avec Expansive: https://github.com/anderly/Expansive
Vous pouvez utiliser la manière suivante
Interpolation de chaîne
Le caractère spécial $ identifie un littéral de chaîne en tant que chaîne interpolée. par exemple.
string name = "Mark";
string surname = "D'souza";
WriteLine($"Name :{name} Surname :{surname}" );//Name :Mark Surname :D'souza
Une chaîne interpolée est un littéral de chaîne pouvant contenir des expressions interpolées. Lorsqu'une chaîne interpolée est résolue en chaîne de résultat, les éléments comportant des expressions interpolées sont remplacés par les représentations sous forme de chaîne des résultats d'expression.
String.Format
Utilisez String.Format si vous devez insérer la valeur d'un objet, d'une variable ou d'une expression dans une autre chaîne.E.g.
WriteLine(String.Format("Name: {0}, Surname : {1}", name, surname));
Utilisation:
strVar = "stack"
mystr = String.Format("This is {0}", strVar);