Ответы:
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);
Дополнительные ресурсы:
$("This feature is {GetDescription(FEATURE_AMAZING))}");
Вы можете использовать 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();
C # 6.0
string mystr = $"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 mystr = string.Format("This is {0}overflow", "stack");
Вы должны использовать String.Format()
. Синтаксис немного другой, вместо него используются числовые заполнители.
Пример:
String.Format("item {0}, item {1}", "one", "two")
См. Http://msdn.microsoft.com/en-us/library/system.string.format.aspx для получения дополнительных сведений.
У вас есть 2 варианта. Вы можете использовать String.Format или оператор конкатенации.
String newString = String.Format("I inserted this string {0} into this one", oldstring);
ИЛИ
String newString = "I inserted this string " + oldstring + " into this one";
String.Format()
использует StringBuilder. StringBuilder обычно более эффективен при конкатенации большого количества строк, но оператор конкатенации идеально подходит для одноразовых. String.Format()
полезен, когда необходимо применить форматирование к выходным данным, например, чтобы добавить заполнение или начальные нули к числовым значениям. Таким образом, использование String.Format()
в цикле потенциально может создать множество StringBuilders. В этой ситуации лучше использовать один StringBuilder, объявленный вне цикла и AppendFormat()
внутри цикла.
Есть еще один способ реализовать заполнители с помощью string.Replace, как ни странно, помогает в определенных ситуациях:
mystr = mystr.Replace("%soverflow", strVar);
Вы можете использовать следующий способ
Строчная интерполяция
Специальный символ $ определяет строковый литерал как интерполированную строку. например
string name = "Mark";
string surname = "D'souza";
WriteLine($"Name :{name} Surname :{surname}" );//Name :Mark Surname :D'souza
Интерполированная строка - это строковый литерал, который может содержать интерполированные выражения. Когда интерполированная строка преобразуется в строку результата, элементы с интерполированными выражениями заменяются строковыми представлениями результатов выражения.
String.Format
Используйте String.Format, если вам нужно вставить значение объекта, переменной или выражения в другую строку.
WriteLine(String.Format("Name: {0}, Surname : {1}", name, surname));
Использование:
strVar = "stack"
mystr = String.Format("This is {0}", strVar);
Вы можете сделать это с помощью Expansive: https://github.com/anderly/Expansive