字符串连接元素的顺序

时间:2019-12-30 08:25:59

标签: c# string

我正在做一些调试,发现很奇怪。为什么

string.Join("3", DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);

返回

2019312330

代替

3201912330

4 个答案:

答案 0 :(得分:5)

您要Concat,而不是Join

string result = string.Concat("3", DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);

请注意,如果Join "3"(第一个参数)是定界符

string.Join("3", "A", "B", "C");

返回"A3B3C"

答案 1 :(得分:2)

第一个参数用于其他参数之间。

要获得预期结果,请使用

string.Join("", "3", DateTime.Now.Year, ...

或使用

DateTime.Now.ToString("3yyyyMd")

答案 2 :(得分:0)

string.Join()只是将元素与您在第一个参数(即定界符)中指定的分隔符连接起来

string.Join("3", DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); 

此行将返回如下字符串:DateTime.Now.Year+"3"+ DateTime.Now.Month +"3"+ DateTime.Now.Day

但您想将3与"yyyyMd"格式的DateTime串联,因此可以尝试

string result = $"3{DateTime.Now.ToString("yyyyMd")}"

答案 3 :(得分:0)

您正在使用 string.Join(字符串分隔符,params obj []数组)方法,该方法使用每个元素之间的指定分隔符来连接对象数组的元素。

这就是为什么在每个数组元素(即年,月和日)之后获得“ 3”的原因。

使用 string.Concat(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day)