2012-06-01 50 views
1

也許這是一個n00b問題,但我已經看過.net/C#MSDN Library,並且尚未得到明確的答案... say我有防爆: (這是不準確問題,因爲我沒有創造的字符串,但讀出來DB的,但足以說明什麼,我跟...工作。)格式化字符串變量包含C#中打印的數字/日期

string dob = "01/02/1990"; 
dob.ToString("MM/dd/YY"); //however, I can't do this. compiler gives me an error... 

可能是因爲它已經是一個字符串了?那麼如何將字符串轉換爲我想要使用說明符的格式,當它已經是一個字符串? 我知道我可以將其轉換爲其他東西(DateTime for Ex)並使用ToString()轉換回字符串...但這似乎反作用......至少對我來說

我也有其他幾個字符串變量的「種類」我試圖將其顯示爲特定的格式,同時將它們保存爲一個Idictionary以便打印到pdf的字段中。 對於前:

d["amount"] = prod.sales.StringAmount; //(here StringSmount holds say 50000 (gotten from a DB), which I want to display as "50,000") 

不過,我也做不到prod.sales.StringAmount.ToString( 「N」,CultureInfo.CurrentUICulture);因爲它已經是一個字符串了!有沒有一個簡單的方法來做到這一點

或需要我弄亂字符串緩衝區或StringBuilder類? 謝謝!

+0

僅供參考您可以在字符串上調用'ToString()'沒有問題 - 但爲什麼你會這樣? – Bridge

+0

爲什麼不使'dob'成爲'DateTime'對象,並且使用'ToString()'來隱式說明......還有你的'dob.ToString(「MM/dd/YY」)'缺少分號 –

+0

原因我在一個字符串上調用ToString():我已經將字符串字段從數據庫加載到biz對象中了,而且我有*格式化它們,以便將它們很好地打印到pdf上。因此,我無法弄清楚是否有一個簡單的方法來做到這一點。即:說我有: – unknownprotocol

回答

3

你可以做這樣的事情:

DateTime dob = DateTime.Parse("01/02/1990"); 

然後

dob.ToString("MM/dd/YY"); 

會工作。

注意DateTime.Parse()有可能的日期時間格式接受各種選項,這也有TryParse()版本,返回false如果字符串是不是有效的日期 - 而不是不是拋出異常。還有DateTime.ParseExact()DateTime.TryParseExact()變化。

對日期時間以外的其他數據類型使用相同的方法:首先使用各種Parse()TryParse()方法將輸入字符串轉換爲正確的數據類型(整數,浮點數等),然後格式化此轉換的結果。

0

我建議先解析成數字/日期時間,然後使用字符串格式化變量。舉一個爲什麼這可能是必要的例子,考慮你的「01/02/1990」字符串在1月2日和2月1日之間是不明確的,除非你用DateTime.ParseExact解析它。

我推薦通過'滾動你自己的'(例如使用StringBuilder),這樣你就可以使用內置的文化敏感的字符串格式化.NET的能力。

1

ToString在不修改原始的情況下返回一個值。

代替

dob.ToString("MM/dd/YY"); 

使用

dob = dob.ToString("MM/dd/YY"); 
+0

這似乎給我一個錯誤,當我嘗試它...關於IFormatProvider錯了......'「Arguemnt類型'字符串'不可分配給參數類型'System.IFormatProvider' – unknownprotocol

1

首先分析字符串爲DateTime實例(通過Parse()TryParse()方法)。在DateTime實例上,然後可以撥打ToString(..)。

1

使用上面提供的格式,您需要轉換回DateTime才能使用.ToString(「MM/dd/YY」)格式。 ToString的原因是用於將對象/值轉換爲字符串表示形式,並且DateTime對象足以接受格式。

如果你想格式化已經是一個字符串,那麼你應該使用String.Format。訪問此鏈接:http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx。此鏈接顯示標準數字格式器。

您可能還想創建自己的字符串格式。看看IFormatProvider和ICustomFormatter:http://msdn.microsoft.com/en-us/library/system.icustomformatter.aspx