嵌套字符串插值
Nested string interpolation
我在 C# 6 中遇到嵌套字符串插值问题。
比如有一个字符串:
string test = "StartText MiddleText1 MiddleText2 EndText";
如果我只想对 MiddleText1 应用 ToUpper() 方法,我可以这样做:
string test = $@"StartText {"MiddleText1".ToUpper()} MiddleText2 EndText";
但是如果我想应用字符串方法怎么办,例如 Replace() 用于字符串的这一部分:
{"Middletext1".ToUpper()} MiddleText2
我预计这样的事情会奏效:
string test = $@"StartText {"{"MiddleText1".ToUpper()} MiddleText2".Replace("x", "y")} EndText";
但是这个语法是错误的——我尝试了很多变体,使用了配额,但我无法为此目的获得正确的语法。
我不希望将字符串拆分为不同的部分。有没有办法只使用插值功能来解决它?
我的建议是不要试图在一行中做所有事情
以下为答案
var middle = "MiddleText1";
middle = middle.ToUpper();
var middle2 = $"{middle} MiddleText2";
middle2 = middle2.Replace("x", "y");
string test = $"StartText {middle2} EndText";
当你把它们加在一起时。
string test = $"StartText {$"{"MiddleText1".ToUpper()} MiddleText2".Replace("x", "y")} EndText";
简而言之,您只是缺少一个 $
但是,即使这样也很混乱,因为我不确定所有替换的内容、此文本的来源以及您要解决的问题
我在 C# 6 中遇到嵌套字符串插值问题。
比如有一个字符串:
string test = "StartText MiddleText1 MiddleText2 EndText";
如果我只想对 MiddleText1 应用 ToUpper() 方法,我可以这样做:
string test = $@"StartText {"MiddleText1".ToUpper()} MiddleText2 EndText";
但是如果我想应用字符串方法怎么办,例如 Replace() 用于字符串的这一部分:
{"Middletext1".ToUpper()} MiddleText2
我预计这样的事情会奏效:
string test = $@"StartText {"{"MiddleText1".ToUpper()} MiddleText2".Replace("x", "y")} EndText";
但是这个语法是错误的——我尝试了很多变体,使用了配额,但我无法为此目的获得正确的语法。 我不希望将字符串拆分为不同的部分。有没有办法只使用插值功能来解决它?
我的建议是不要试图在一行中做所有事情
以下为答案
var middle = "MiddleText1";
middle = middle.ToUpper();
var middle2 = $"{middle} MiddleText2";
middle2 = middle2.Replace("x", "y");
string test = $"StartText {middle2} EndText";
当你把它们加在一起时。
string test = $"StartText {$"{"MiddleText1".ToUpper()} MiddleText2".Replace("x", "y")} EndText";
简而言之,您只是缺少一个 $
但是,即使这样也很混乱,因为我不确定所有替换的内容、此文本的来源以及您要解决的问题