Yanıtlar:
string mystr = string.Format("This is {0}overflow", strVar);
Ayrıca dizinler yerine adlandırılmış parametreleri de kullanabilirsiniz .
Bu, C # 6.0 (Visual Studio 2015+) itibarıyla eklenmiştir.
Misal:
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!"
Bu sözdizimsel şekerdir:
var formattedStr = String.Format("Hello planet {0}, my name is {1}!", planetName, myName);
Ek kaynaklar:
$("This feature is {GetDescription(FEATURE_AMAZING))}");
string.Format
Değerleri dizelere bırakmak için kullanabilirsiniz :
private static readonly string formatString = "This is {0}overflow";
...
var strVar = "stack";
var myStr = string.Format(formatString, "stack");
Bir alternatif, C # birleştirme operatörünü kullanmaktır:
var strVar = "stack";
var myStr = "This is " + strVar + "overflow";
Çok fazla birleştirme yapıyorsanız StringBuilder
, daha verimli olan sınıfı kullanın :
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";
Bunun operatörü yok. Kullanmanız gerekiyor string.Format
.
string strVar = "stack";
string mystr = string.Format("This is {0}soverflow", strVar);
Maalesef string.Format
statik bir yöntemdir, bu yüzden kolayca yazamazsınız "This is {0}soverflow".Format(strVar)
. Bazı kişiler bu sözdizimine izin veren bir uzantı yöntemi tanımlamıştır.
Kullanım string.Format
:
string mystr = string.Format("This is {0}overflow", "stack");
Kullanmalısınız String.Format()
. Sözdizimi biraz farklıdır, bunun yerine sayısal yer tutucular kullanılır.
Misal:
String.Format("item {0}, item {1}", "one", "two")
Bir bak bakalım Daha fazla ayrıntı için http://msdn.microsoft.com/en-us/library/system.string.format.aspx bakın.
2 seçeneğiniz var. String.Format'ı kullanabilir veya birleştirme operatörünü kullanabilirsiniz.
String newString = String.Format("I inserted this string {0} into this one", oldstring);
VEYA
String newString = "I inserted this string " + oldstring + " into this one";
String.Format()
StringBuilder kullanılır. StringBuilder, çok sayıda dizeyi birleştirirken genellikle daha etkilidir ancak birleştirme operatörü tek seferlik işlemler için mükemmeldir. String.Format()
çıktıya biçimlendirmenin uygulanması gerektiğinde, örneğin sayısal değerlere dolgu veya baştaki sıfırlar eklemek için kullanışlıdır. Dolayısıyla String.Format()
, bir döngü içinde kullanmak , potansiyel olarak çok sayıda StringBuilders başlatır. Bu durumda, döngünün dışında ve döngünün AppendFormat()
içinde bildirilmiş tek bir StringBuilder kullanmak daha iyidir .
Dizeyle yer tutucuları uygulamanın bir yolu daha var. Değiştir, garip bir şekilde bazı durumlarda yardımcı olur:
mystr = mystr.Replace("%soverflow", strVar);
Aşağıdaki yolu kullanabilirsiniz
Dize enterpolasyonu
$ Özel karakteri, bir dizgeyi enterpolasyonlu bir dize olarak tanımlar. Örneğin
string name = "Mark";
string surname = "D'souza";
WriteLine($"Name :{name} Surname :{surname}" );//Name :Mark Surname :D'souza
Enterpolasyonlu bir dize, enterpolasyonlu ifadeler içerebilen bir dizedir. Enterpolasyonlu bir dize bir sonuç dizesine çözümlendiğinde, enterpolasyonlu ifadelere sahip öğeler, ifade sonuçlarının dize temsilleriyle değiştirilir.
String.Format
Bir nesnenin, değişkenin veya ifadenin değerini başka bir dizeye eklemeniz gerekiyorsa String.Format kullanın.
WriteLine(String.Format("Name: {0}, Surname : {1}", name, surname));
Kullanım:
strVar = "stack"
mystr = String.Format("This is {0}", strVar);
Bunu Expansive ile başarabilirsiniz: https://github.com/anderly/Expansive