来自数据库的具有字符串插值格式的字符串在 C# 代码中使用它
A string with string interpolation format from database use it in C# code
例如,我有一个从数据库中检索到的字符串。
string a = "The quick brown {Split[0]} {Split[1]} the lazy dog";
string b = "jumps over";
然后我会执行这段代码。
String[] Split= b.Split(' ');
String c= $"{a}";
Console.Writeline(c):
此方法无效。你知道这怎么可能吗?我感谢您的帮助。 ^-^
作为 LasseV.Karlsen 和 Hans Kesting
已说明您可以在这种情况下使用 string.Format
。让我举个简单的例子:
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);
请注意,这只是 string.Format
的一个示例,而它还有无数其他用途。了解有关此方法的更多信息的最佳资源可能是 Microsoft Documentation.
内插字符串由编译器解释。即,例如
string a = "fox";
string b = "jumps over";
// this line ...
string s = $"The quick brown {a} {b} the lazy dog";
... 转换为
string s = String.Format("The quick brown {0} {1} the lazy dog", a, b);
...由编译器。
因此,您不能在运行时对(常规)字符串中的变量名称使用字符串插值。
您必须在运行时使用 String.Format
:
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):
请注意,运行时,局部变量的名称是未知的。如果反编译已编译的 c# 程序,反编译代码将包含局部变量的通用名称,如 l1
、l2
等(取决于反编译器)。
例如,我有一个从数据库中检索到的字符串。
string a = "The quick brown {Split[0]} {Split[1]} the lazy dog";
string b = "jumps over";
然后我会执行这段代码。
String[] Split= b.Split(' ');
String c= $"{a}";
Console.Writeline(c):
此方法无效。你知道这怎么可能吗?我感谢您的帮助。 ^-^
作为 LasseV.Karlsen 和 Hans Kesting
已说明您可以在这种情况下使用 string.Format
。让我举个简单的例子:
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);
请注意,这只是 string.Format
的一个示例,而它还有无数其他用途。了解有关此方法的更多信息的最佳资源可能是 Microsoft Documentation.
内插字符串由编译器解释。即,例如
string a = "fox";
string b = "jumps over";
// this line ...
string s = $"The quick brown {a} {b} the lazy dog";
... 转换为
string s = String.Format("The quick brown {0} {1} the lazy dog", a, b);
...由编译器。
因此,您不能在运行时对(常规)字符串中的变量名称使用字符串插值。
您必须在运行时使用 String.Format
:
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):
请注意,运行时,局部变量的名称是未知的。如果反编译已编译的 c# 程序,反编译代码将包含局部变量的通用名称,如 l1
、l2
等(取决于反编译器)。