Вложенная интерполяция строк - PullRequest
0 голосов
/ 20 ноября 2018

Я столкнулся с проблемой интерполяции вложенных строк в C # 6.

Например, есть строка:

string test = "StartText MiddleText1 MiddleText2 EndText";

Если я хочу применить ToUpper () метод только для MiddleText1, я могу сделать это так:

string test = $@"StartText {"MiddleText1".ToUpper()} MiddleText2 EndText";

Но что, если я хочу применить строковый метод, например Replace () для этой части строки:

{"Middletext1".ToUpper()} MiddleText2

Я ожидал, что что-то вроде этого будет работать:

string test = $@"StartText {"{"MiddleText1".ToUpper()} MiddleText2".Replace("x", "y")} EndText";

Но этот синтаксис неправильный - я пробовал много вариантов, играл с квотами, но не смог получить правильный синтаксис для этой цели. Я хотел бы не разбивать строку на разные части. Есть ли способ решить эту проблему, используя только функцию интерполяции?

1 Ответ

0 голосов
/ 20 ноября 2018

Хватит делать все в одной строке, мое предложение

Ниже приводится ответ

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

Короче говоря, вы просто пропустили $

Однако, это даже грязно, так как я не уверен, для чего нужны все замены, откуда взялся этот текст и какую проблему вы пытаетесь решить

...