Home > OS >  A string with string interpolation format from database use it in C# code
A string with string interpolation format from database use it in C# code

Time:11-12

For example I have a string that was retrieved from the database.

string a = "The quick brown {Split[0]}   {Split[1]} the lazy dog";
string b = "jumps over";

And then I will perform this code.

String[] Split= b.Split(' ');
String c= $"{a}";
Console.Writeline(c):

This method is not working. Do you have any idea how can this become possible? I appreciate your help. ^-^

CodePudding user response:

The interpolated strings are interpreted by the compiler. I.e., for example in

string a = "fox";
string b = "jumps over";

// this line ...
string s = $"The quick brown {a} {b} the lazy dog";

... is converted to

string s = String.Format("The quick brown {0} {1} the lazy dog", a, b);

... by the compiler.

Therefore, you cannot use string interpolation at runtime with variable names in a (regular) string.

You must use String.Format at runtime:

string a = "The quick brown {0} {1} the lazy dog";
string b = "fox;jumps over";

string[] split = b.Split(';');
string c = String.Format(a, split[0], split[1]);
Console.Writeline(c):

Note that a runtime, the names of the local variables are not known. If you decompile a compiled c# programm, the decompiled code will contain generic names for local variables like l1, l2 etc. (depending on the decompiler).

CodePudding user response:

As LasseV.Karlsen and Hans Kesting has explained you can use string.Format in this scenario. Let me give you a quick example:

string b = "jumps over";
string[] Split = b.Split(' ');
string c = string.Format("The quick brown fox {0} {1} the lazy dog.",Split[0], Split[1]);
Console.WriteLine(c);

Note that this is just one example with string.Format while there exist countless other uses for the same. Your best resource to learn more about this method could be Microsoft Documentation.

  • Related