2016-09-26 2 views
2

Ich frage mich nur, ob es eine Möglichkeit gibt, String-Interpolation zu kombinieren, die in C# 6.0 und String.format eingeführt wurde? Irgendwelche schlaueren Ideen wie das?Kombinieren Sie String-Interpolation und string.format

string fancyString = $"My FancyString was created at { DateTime.Now }" + " and I want to add some static with string.format like {0}"; 
+2

* Warum * möchten Sie es tun? Was können Sie damit erreichen, was mit String-Interpolation nicht möglich ist? – Fabjan

+0

Und wie würdest du es genau verwenden? Übergeben interpolierte Zeichenfolge an "String.Format"? – kiziu

+0

Sie wetten, Sie können stringformat nach der Interpolation wie dieses string.format (fancyString, SomethingToFillYour {0} With); Aber warum würdest du das jemals tun wollen? – Thorarins

Antwort

3

Entfliehen Sie {0}, indem es als {{0}} Schreiben so String Interpolation sie allein lässt. Dann können Sie die Zeichenfolge in string.Format übergeben, um die {0} zu ersetzen.

Für diejenigen fragen, warum Sie dies tun wollen würde, kann ich eine Möglichkeit vorstellen, wo Sie irgendeine Art von wieder verwendbaren Vorlage tun wollen wie:

var urlTemplate = $"<a href='{BaseHref}/some/path/{{0}}'>{{1}}</a>"; 

var homeLink = string.Format(urlTemplate, "home.html", "Home"); 

var aboutLink = string.Format(urlTemplate, "about.html", "About Us"); 

Natürlich ist dieses Beispiel zu einfach zu rechtfertigen Solch eine Technik, aber ich kann mir vorstellen, wenn Sie eine Vorlage mit einer sehr großen Anzahl von Variablen hatten und Sie nur ein Paar von einer gerenderten Vorlage zur nächsten interessiert, dass dies besser lesbar wäre als {32}, {33}, {34}... usw. in Ihrer Vorlage.