Quickest/Best 格式化字符串的方法
Quickest/Best way to Format a string
我知道这似乎是一个初级问题,通过谷歌搜索应该很容易找到解决方案,但我被卡住了。
我正在使用 C#。
我有这个字符串:
20150824100112345(举例)
我希望将其转换为新的字符串,如下所示:
2015[=31=]5
有没有我可以用来完成此操作的“1 行”代码?
注意
没有第一次将其转换为日期时间格式
如评论中所述,您真的应该将其解析为 DateTime,然后将其转换为字符串。
但是要按照您的要求解析字符串,您应该使用可以将其分成组的正则表达式。
如果您不想首先解析为 DateTime(即,如果您不关心有效性)并且输入始终按照您的示例进行格式化(零填充,因此 08
而不是8
),您可以通过几个简单的 Substring()
调用来完成:
string input = "20150824100112345";
string output = input.Substring(0, 4) + @"\" // 2015
+ input.Substring(4, 2) + @"\" // 08
+ input.Substring(6, 2) + @"\" // 24
+ input.Substring(8, 2) + @"\" // 10
+ input.Substring(10, 2) + @"\" // 01
+ input.Substring(12, 2) + @"\" // 12
+ input.Substring(14, 3); // 345
或者在正则表达式中:
string input = "20150824100112345";
string output = Regex.Replace(input,
"([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{3})",
@"$2$3$4$5$6$7");
我知道这似乎是一个初级问题,通过谷歌搜索应该很容易找到解决方案,但我被卡住了。
我正在使用 C#。
我有这个字符串:
20150824100112345(举例)
我希望将其转换为新的字符串,如下所示:
2015[=31=]5
有没有我可以用来完成此操作的“1 行”代码?
注意 没有第一次将其转换为日期时间格式
如评论中所述,您真的应该将其解析为 DateTime,然后将其转换为字符串。
但是要按照您的要求解析字符串,您应该使用可以将其分成组的正则表达式。
如果您不想首先解析为 DateTime(即,如果您不关心有效性)并且输入始终按照您的示例进行格式化(零填充,因此 08
而不是8
),您可以通过几个简单的 Substring()
调用来完成:
string input = "20150824100112345";
string output = input.Substring(0, 4) + @"\" // 2015
+ input.Substring(4, 2) + @"\" // 08
+ input.Substring(6, 2) + @"\" // 24
+ input.Substring(8, 2) + @"\" // 10
+ input.Substring(10, 2) + @"\" // 01
+ input.Substring(12, 2) + @"\" // 12
+ input.Substring(14, 3); // 345
或者在正则表达式中:
string input = "20150824100112345";
string output = Regex.Replace(input,
"([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{3})",
@"$2$3$4$5$6$7");