2016-11-14 124 views
1

我想要插入字符串中的標記,但也要插入格式本身。下面是使用string.Format從一個局部變量加載格式字符串的例子:在內插字符串中插入格式字符串

object boxedDate = DateTime.Today; 
var dateFormat = "MM-dd-yyyy"; 
var dateString = string.Format($"{{0:{dateFormat}}}", boxedDate); 

將插入字符串語法,但是,它似乎字符串的格式一部分是純文字。從概念上講,我想這樣做:

dateString = $"{boxedDate:{dateFormat}}"; 

當然不起作用。我知道我可以拆箱datetime和調用.ToString()這樣的:

dateString = $"{((DateTime)boxedDate).ToString(dateFormat)}"; 

...但是,這需要我知道在運行時類型。這可能是小數,整數,日期等

這不是一個交易斷路器或任何東西。如果沒有實際的方法來使用插值字符串語法,我仍然可以使用string.Format

回答

1

我認爲沒有逃避知道類型來選擇適當的格式 - 或一些轉換邏輯。雖然FormattableString類型可能會幫助你的原因。

var lcid = "en-US"; 
FormattableString f = $"{model.Date:D}"; 
var s = f.ToString(new CultureInfo(lcid)); 

在這種情況下,我讓系統根據文化信息調整顯示格式。當然,你必須事先知道類型或者轉換價值。

除此之外,是的,我認爲ToStringstring.Format方法是你最好的選擇。