我在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";
但是这个语法是错误的 - 我试过很多变化,尝试过引号但是我没能得到正确的语法。我希望不需要将字符串拆分成不同的部分。有没有一种只使用插值功能就可以解决的方法?
string test = $@"开头文字 {$"{"中间文字1".ToUpper()} 中间文字2".Replace("x", "y")} 结尾文字";
... 话虽如此,这看起来实在是太难读了,而且真的违背了字符串插值的初衷。 - Glorin Oakenfoot