簡體   English   中英

字符串插值 C#

[英]String Interpolation C#

如果我們可以將字符串的 temp_data 存儲在變量中並對其使用插值?

var name = "John";

var temp_data = "Hi {name}";

var result_data = $temp_data;

如果除了string.Format()string.Replace()之外,還有任何可能的解決方案可用

如果您希望將消息存儲為外部資源,您將需要使用 string.Format 而不是字符串插值,內插字符串必須在編譯時作為字符串文字完整存在。

您還需要確保消息中包含的變量數量與調用 string.format 的代碼中的變量數量相匹配,否則將無法正確轉置。

例如,這是使用資源文件;

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

Strings.ErrorMessage 將包含;

“這是錯誤 {0} 和消息 {1}”

您可以使用$ - string interpolation (C# Reference) https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated

你可以這樣使用

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}");

使用 C#6,你可以完全按照你寫的做,沒有錯字:

var name = "John";

var temp_data = $"Hi {name}";

var result_data = temp_data;

Console.log(result_data);

將返回“嗨約翰”;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM