Как мне интерполировать строки?


Я хочу сделать следующее В C# (исходя из фона Python):

strVar = "stack"
mystr  = "This is %soverflow" % (strVar)

Как заменить маркер внутри строки со значением вне его?

11 98

11 ответов:

string mystr = string.Format("This is {0}overflow", strVar);

и вы также можете использовать именованные параметры вместо индексов.

Это было добавлено с C# 6.0 (Visual Studio 2015+).

пример:

var planetName = "Bob";
var myName = "Ford"; 
var formattedStr = $"Hello planet {planetName}, my name is {myName}!";
// formattedStr should be "Hello planet Bob, my name is Ford!"

это синтаксический сахар для:

var formattedStr = String.Format("Hello planet {0}, my name is {1}!", planetName, myName);

Дополнительные Материалы:

строковая интерполяция для обсуждения C# (v2)

Предварительный Просмотр Языка C# 6.0

можно использовать string.Format чтобы поместить значения в строки:

private static readonly string formatString = "This is {0}overflow";
...
var strVar = "stack";
var myStr = string.Format(formatString, "stack");

альтернативой является использование оператора конкатенации C#:

var strVar = "stack";
var myStr = "This is " + strVar + "overflow";

если вы делаете много конкатенаций, используйте StringBuilder класс, который является более эффективным:

var strVar = "stack";
var stringBuilder = new StringBuilder("This is ");
for (;;)
{
    stringBuilder.Append(strVar); // spot the deliberate mistake ;-)
}
stringBuilder.Append("overflow");
var myStr = stringBuilder.ToString();

Если вы в настоящее время используете Visual Studio 2015 С C# 6.0, попробуйте следующее:

var strVar = "stack";

string str = $"This is {strVar} OverFlow";

эта функция называется интерполяция строк.

для этого нет оператора. Вы должны использовать string.Format.

string strVar = "stack";
string mystr  = string.Format("This is {0}soverflow", strVar);

к сожалению string.Format - это статический метод, поэтому вы не можете просто написать "This is {0}soverflow".Format(strVar). Некоторые люди определили метод расширения, который позволяет этот синтаксис.

вы должны использовать String.Format(). Синтаксис немного отличается, вместо него используются числовые заполнители.

пример:

String.Format("item {0}, item {1}", "one", "two")

взгляните на http://msdn.microsoft.com/en-us/library/system.string.format.aspx для более подробной информации.

использовать string.Format:

string mystr = string.Format("This is {0}overflow", "stack");

у вас есть 2 варианта. Вы можете использовать строку.Формат или можно использовать оператор конкатенации.

String newString = String.Format("I inserted this string {0} into this one", oldstring);

или

String newString = "I inserted this string " + oldstring + " into this one";

использование:

strVar = "stack"
mystr  = String.Format("This is {0}", strVar);

есть еще один способ реализовать заполнители со строкой.Замена, как ни странно помогает в определенных ситуациях:

mystr = mystr.Replace("%soverflow", strVar);

вы можете сделать это с помощью Expansive:https://github.com/anderly/Expansive