R. *_*rth 0 c# string debugging concatenation char
我有一个非常简单的方法,它接受一个字符串,将其分解为一个char数组,然后从这些片段创建一个新的字符串.然而它出乎意料地表现,我不明白为什么?这是断点的图片.在这种情况下,输入字符串是"20160622".
编辑:对不起图片.这是文中的问题.
internal class Program
{
private static void Main()
{
string test = "20160622";
Console.WriteLine(ConvertDateField(test));
Console.ReadKey();
}
private static string ConvertDateField(string date)
{
var temp = date.ToCharArray();
var output = temp[0] + temp[1] + temp[2] + temp[3] + "-" + temp[4] + temp[5] + "-" + temp[6] + temp[7] + " 00:00:00";
return output;
}
}
Run Code Online (Sandbox Code Playgroud)
输出为"201-06-22 00:00:00".
编辑2:我知道可能有更好的方法来做到这一点.我想要了解的是为什么这个代码按照它的方式运行.即.为什么6是唯一没有连接的char?
如您所见,第四个char,temp [3]是一个'6',没有被连接到输出字符串中.为什么?
编辑3:我用这种方式解决了问题
private static string ConvertDateField(string date)
{
return DateTime.ParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd 00:00:00");
}
Run Code Online (Sandbox Code Playgroud)
谢谢史蒂夫的建议.
对于你的问题.char concat不是字符串concat.发生的事情是c#通过使用ASCII将它们转换为int来对字符进行数学运算.
临时1,2,3,4的相应ascii是50,48,49,54,其总和是201.(这是巧合)
然后int + stringconcat导致字符串,所以字符串的其余部分按预期工作.
如果它是DateTime对象,则有一种更简单的方法来执行转换.你可以简单地打电话dateTime.ToString("yyyy-MM-dd 00:00:00"),你会得到你想要的结果.