繁体   English   中英

格式化包含数字/日期的字符串变量以在C#中打印

[英]Formatting String Variables that contain numbers/dates for printing in C#

也许这是一个的n00b问题,但我已经看过了.NET / C#MSDN库,并在这个网站,还没有得出一个明确的答案......说我有例如:(这是不完全的问题,因为我'不是创建字符串而是从数据库中读取它们。但是它只是用来说明我正在使用的内容...)

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

可能是因为它已经是字符串了? 如果字符串已经是字符串,那么如何将其转换为想要使用的格式? 我知道我可以将其转换为其他内容(例如DateTime),然后使用ToString()转换回字符串...但这似乎适得其反...至少对我而言

我还尝试将其他几种“字符串”字符串变量显示为特定格式,同时将它们保存到词典以打印到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类? 谢谢!

您可以执行以下操作:

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

接着

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

将工作。

需要注意的是DateTime.Parse()有可能的日期时间格式接受各种选项,这也有一个TryParse()返回的版本false ,如果该字符串不是有效的日期-而不是不是抛出异常。 还有DateTime.ParseExact()DateTime.TryParseExact()变体。

对日期时间以外的其他数据类型使用相同的方法:首先将输入字符串转换为正确的数据类型(整数,浮点型)-使用各种Parse()TryParse()方法,然后格式化此转换的结果。

ToString返回一个值,而不修改原始值。

代替

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

采用

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

首先将字符串解析为DateTime实例(通过Parse()TryParse()方法)。 然后,可以在DateTime实例上调用ToString (..)。

使用上面提供的格式,您需要转换回DateTime才能使用.ToString(“ MM / dd / YY”)格式。 ToString之所以用于将对象/值转换为字符串表示形式,而DateTime对象足以接受格式。

如果要格式化已经是字符串的内容,则应使用String.Format。 访问此链接: http : //msdn.microsoft.com/zh-cn/library/dwhawy9k.aspx 此链接显示标准数字格式器。

您可能还需要创建自己的字符串格式。 查看IFormatProvider和ICustomFormatter: http : //msdn.microsoft.com/zh-cn/library/system.icustomformatter.aspx

我建议先将其解析为数字/ DateTime,然后使用字符串格式变量。 有关为何有必要这样做的示例,请考虑在1月2日至2月1日之间,您的“ 01/02/1990”字符串是不明确的,除非您使用DateTime.ParseExact对其进行解析。

我建议不要使用“自己动手”(例如,使用StringBuilder),以便您可以使用.NET内置的对文化敏感的字符串格式设置功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM