Как мне интерполировать строки?
Я хочу сделать следующее В C# (исходя из фона Python):
strVar = "stack"
mystr = "This is %soverflow" % (strVar)
Как заменить маркер внутри строки со значением вне его?
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);
Дополнительные Материалы:
можно использовать
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 для более подробной информации.
у вас есть 2 варианта. Вы можете использовать строку.Формат или можно использовать оператор конкатенации.
String newString = String.Format("I inserted this string {0} into this one", oldstring);
или
String newString = "I inserted this string " + oldstring + " into this one";
есть еще один способ реализовать заполнители со строкой.Замена, как ни странно помогает в определенных ситуациях:
mystr = mystr.Replace("%soverflow", strVar);
вы можете сделать это с помощью Expansive:https://github.com/anderly/Expansive