如何格式化包含数字和字符的字符串

时间:2017-12-07 14:24:27

标签: c# string-formatting

我有以下字符串"2017-2",我需要将其格式化为"2017-02"

var period = "2017-2";
var periodFormatted = String.Format("{0:0000-00}", period);  

periodFormatted返回"2017-2"

将句点格式化为"2017-02"的正确语法是什么?

2 个答案:

答案 0 :(得分:2)

string.Format不会知道(或关心)您的字符串包含数字,因此您无法直接格式化。您可以拆分字符串并将最后一部分解析为数字。例如:

var period = "2017-2";
var parts = period.Split('-');;
var periodFormatted = $"{parts[0]}-{int.Parse(parts[1]):D2}";

但是,您应该首先将period值作为正确的DateTime对象(或表示年份和月份值的自定义类型),这会使格式设置变得微不足道。

答案 1 :(得分:1)

您可以将输入 - string解析为DateTime,然后在第二步中对其进行格式化。

string period = "2017-2"; 
DateTime temp = DateTime.ParseExact(period, "yyyy-M", CultureInfo.InvariantCulture );
string result = temp.ToString("yyyy-MM");

注意:M定义不带前导0的月份,MM始终为2位数月份。

参考:https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings