I want to do the following in C# (coming from a Python background):
strVar = "stack"
mystr = "This is %soverflow" % (strVar)
How do I replace the token inside the string with the value outside of it?
In computer programming, string interpolation (or variable interpolation, variable substitution, or variable expansion) is the process of evaluating a string literal containing one or more placeholders, yielding a result in which the placeholders are replaced with their corresponding values.
Python 3.6 added new string interpolation method called literal string interpolation and introduced a new literal prefix f . This new way of formatting strings is powerful and easy to use. It provides access to embedded Python expressions inside string constants.
This has been added as of C# 6.0 (Visual Studio 2015+).
Example:
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!"
This is syntactic sugar for:
var formattedStr = String.Format("Hello planet {0}, my name is {1}!", planetName, myName);
Additional Resources:
String Interpolation for C# (v2) Discussion
C# 6.0 Language Preview
string mystr = string.Format("This is {0}overflow", strVar);
And you could also use named parameters instead of indexes.
You can use string.Format
to drop values into strings:
private static readonly string formatString = "This is {0}overflow";
...
var strVar = "stack";
var myStr = string.Format(formatString, "stack");
An alternative is to use the C# concatenation operator:
var strVar = "stack";
var myStr = "This is " + strVar + "overflow";
If you're doing a lot of concatenations use the StringBuilder
class which is more efficient:
var strVar = "stack";
var stringBuilder = new StringBuilder("This is ");
for (;;)
{
stringBuilder.Append(strVar); // spot the deliberate mistake ;-)
}
stringBuilder.Append("overflow");
var myStr = stringBuilder.ToString();
If you currently use Visual Studio 2015 with C# 6.0, try the following:
var strVar = "stack";
string str = $"This is {strVar} OverFlow";
that feature is called string interpolation.
C# 6.0
string mystr = $"This is {strVar}overflow";
There is no operator for that. You need to use string.Format
.
string strVar = "stack";
string mystr = string.Format("This is {0}soverflow", strVar);
Unfortunately string.Format
is a static method, so you can't simply write "This is {0}soverflow".Format(strVar)
. Some people have defined an extension method, that allows this syntax.
Use string.Format
:
string mystr = string.Format("This is {0}overflow", "stack");
You should be using String.Format()
. The syntax is a bit different, numerical placeholders are used instead.
Example:
String.Format("item {0}, item {1}", "one", "two")
Have a look at http://msdn.microsoft.com/en-us/library/system.string.format.aspx for more details.
You have 2 options. You can either use String.Format or you can use the concatenation operator.
String newString = String.Format("I inserted this string {0} into this one", oldstring);
OR
String newString = "I inserted this string " + oldstring + " into this one";
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With