Odpowiedzi:
string mystr = string.Format("This is {0}overflow", strVar);
Możesz także użyć nazwanych parametrów zamiast indeksów.
To zostało dodane w C # 6,0 (Visual Studio 2015+).
Przykład:
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!"
To jest cukier syntaktyczny do:
var formattedStr = String.Format("Hello planet {0}, my name is {1}!", planetName, myName);
Dodatkowe zasoby:
$("This feature is {GetDescription(FEATURE_AMAZING))}");
Możesz użyć, string.Format
aby upuścić wartości w ciągach:
private static readonly string formatString = "This is {0}overflow";
...
var strVar = "stack";
var myStr = string.Format(formatString, "stack");
Alternatywą jest użycie operatora konkatenacji C #:
var strVar = "stack";
var myStr = "This is " + strVar + "overflow";
Jeśli wykonujesz dużo konkatenacji, użyj StringBuilder
bardziej wydajnej klasy:
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";
Nie ma do tego operatora. Musisz użyć string.Format
.
string strVar = "stack";
string mystr = string.Format("This is {0}soverflow", strVar);
Niestety string.Format
jest to metoda statyczna, więc nie można po prostu pisać "This is {0}soverflow".Format(strVar)
. Niektórzy ludzie zdefiniowali metodę rozszerzenia, która pozwala na taką składnię.
Zastosowanie string.Format
:
string mystr = string.Format("This is {0}overflow", "stack");
Powinieneś używać String.Format()
. Składnia jest nieco inna, zamiast tego używane są liczbowe symbole zastępcze.
Przykład:
String.Format("item {0}, item {1}", "one", "two")
Więcej informacji można znaleźć pod adresem http://msdn.microsoft.com/en-us/library/system.string.format.aspx .
Masz 2 opcje. Możesz użyć String.Format lub możesz użyć operatora konkatenacji.
String newString = String.Format("I inserted this string {0} into this one", oldstring);
LUB
String newString = "I inserted this string " + oldstring + " into this one";
String.Format()
używa StringBuilder. StringBuilder jest zwykle bardziej wydajny podczas konkatenacji wielu ciągów, ale operator konkatenacji jest idealny do jednorazowych. String.Format()
przydaje się, gdy na wyjściu trzeba zastosować formatowanie, np. aby dodać dopełnienie lub zera wiodące do wartości liczbowych. Tak więc użycie String.Format()
w pętli potencjalnie spowoduje utworzenie wielu obiektów StringBuilders. W takiej sytuacji lepiej jest użyć pojedynczego StringBuildera zadeklarowanego na zewnątrz pętli i AppendFormat()
wewnątrz pętli.
Jest jeszcze jeden sposób na zaimplementowanie symboli zastępczych za pomocą ciągu znaków. Zamień, co dziwnie pomaga w niektórych sytuacjach:
mystr = mystr.Replace("%soverflow", strVar);
Możesz skorzystać z następującego sposobu
Interpolacja ciągów
Znak specjalny $ identyfikuje literał ciągu jako łańcuch interpolowany. na przykład
string name = "Mark";
string surname = "D'souza";
WriteLine($"Name :{name} Surname :{surname}" );//Name :Mark Surname :D'souza
Ciąg interpolowany to literał ciągu, który może zawierać wyrażenia interpolowane. Gdy interpolowany ciąg jest tłumaczony na ciąg wynikowy, elementy z interpolowanymi wyrażeniami są zastępowane ciągami reprezentującymi wyniki wyrażenia.
String.Format
Użyj String.Format, jeśli chcesz wstawić wartość obiektu, zmiennej lub wyrażenia do innego ciągu
WriteLine(String.Format("Name: {0}, Surname : {1}", name, surname));
Posługiwać się:
strVar = "stack"
mystr = String.Format("This is {0}", strVar);
Możesz to osiągnąć dzięki Expansive: https://github.com/anderly/Expansive