0
A
回答
2
枚舉不這樣做。你需要提供一個枚舉值的映射來顯示字符串,或者你可以做一些事情,比如定義一個可以使用顯示字符串的屬性(這需要一些簡單的反射來獲取給定枚舉值的屬性,但是具有好處是您可以在定義枚舉值的位置定義顯示名稱)。
例如,你可以使用一個Dictionary<status,string>
映射他們:
var myMap = new Dictionary<status,string>()
{
{ status.NotStarted, "Not Started" },
{ status.InProgress, "In Progress" }
};
我們得到一個給定的狀態值顯示字符串s
你只是這樣做:
var s = status.NotStarted;
var displayString = myMap[s]; // "Not Started"
當然,你會把它放在某個地方的課程中,所以它只能在一個地方定義一次。
另一個相當脆弱,快速和骯髒的方式來做到這一點將是利用您的枚舉名稱是Pascal的事實,並使用像正則表達式採取枚舉名稱和插入額外的空間。但是,這很哈克。所以,你可以這樣做:
var r = new Regex("([A-Z][a-z]*)([A-Z][a-z]*)");
var displayString = r.Replace(s.ToString(),"$1 $2"); // "Not Started"
但是,這會窒息對不符合兩個帕斯卡爾 - 套管詞模式中的任何枚舉值。當然,你可以讓你的正則表達式更加靈活,但這超出了問題的範圍。
0
上emum值調用ToString
是相當於Enum.GetName這將使你的命名值即
Console.WriteLine(status.NotStarted.ToString()) // NotStarted
從那裏,假設的格式是一致的,你可以將字符串從Pascal大小寫轉換成空白分隔字符串,例如
string result = Regex.Replace(status.NotStarted, "([a-z])([A-Z])", "$1 $2");
Console.WriteLine(result); // Not Started
0
Enum.GetName(typeof (Status), Status.InProgress));
相關問題
- 1. 如何格式化04Apr格式爲()
- 2. 如何格式化雙
- 3. 如何格式化DataGrid?
- 4. 如何格式化小數?
- 5. 如何格式化小數
- 6. 如何格式化陣列
- 7. 如何格式化報告?
- 8. 如何格式化GGPLOT2
- 9. 如何格式化雙
- 10. 如何格式化的Java
- 11. 如何格式化日期?
- 12. 如何格式化xml?
- 13. 如何抵消格式化
- 14. 如何格式化NSDate?
- 15. 如何格式化小數?
- 16. 如何格式化美元?
- 17. 如何格式化軸highchart
- 18. 如何格式化XML?
- 19. 如何格式化用java
- 20. 如何格式化數據
- 21. 如何格式化日期?
- 22. 如何格式化此java.sql.date?
- 23. 如何格式化從XML
- 24. 如何格式化引導
- 25. 如何格式化輸出
- 26. 如何格式化日期
- 27. 如何格式化highcharts
- 28. 如何格式化的GridView
- 29. 如何格式化輸出
- 30. 如何格式化在vb.net
看看這裏:http://stackoverflow.com/questions/479410/enum-tostring-with-user-friendly-strings – mshsayem
我剛剛加入我的[回答](http://stackoverflow.com/questions/479410/enum-tostring-with-user-friendly-strings/33921043#33921043)到鏈接的問題,這是[Humanizer](https:// github。 com/Humanizr/Humanizer)的用法。 –